Add support for ByteSource

Also upgrade to Guava 15.0.
Minor code refactoring and javadoc improvements
upgrade to assertj-core 1.5.0 and update tests