Throw ClassNotFoundException when appropriate

Currently, the ClassSource returned by ClassSource.fromMap will return null if the Class cannot be found (as that is the behavior of maps). However, other ClassSources throw a ClassNotFoundException if the class cannot be loaded. This commit changes the behavior of ClassSource.fromMap to throw a ClassNotFoundException if the class was not found in the map (or was mapped to null). This commit also changes the method to interpret a null map as an empty map.
Document new fromMap behavior
Add ClassSource.attemptLoadFrom method
This method is an alternative to chaining retry calls
attemptLoadFrom now ignores null values properly
Add ClassSource.empty, ClassSource.attemptLoadFrom will also not
tolerate nulls
attemptLoadFrom will throw IllegalArgumentException for arrays of length
1 with a null element
Merge pull request #48 from glen3b/patch-1

Minor improvements to ClassLoader