Implement authentication for saned

Based on http://www.sane-project.org/html/doc017.html#s5.2.10 and observed behaviour of scanimage
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
Adding local password file provider (~/.sane/pass)
Added option to specify arbitrary password file location. Reverted test host to localhost