Implement authentication for saned

Based on http://www.sane-project.org/html/doc017.html#s5.2.10 and observed behaviour of scanimage
Merge branch 'implement_authentication' of https://github.com/matthiasblaesing/jfreesane into matthiasblaesing-implement_authentication
Add javadoc to encoder, make encodeAsHex private
rename fromStream to fromSession
make SanePasswordProvider an abstract class, add static factory constructor
add a test that exercises device auth
A few random cleanups to SaneSession, including making writePassword take a String