JDBC QueryAndEncodeDatabaseAuthenticationHandler

This is a JDBC authn handler that has support for dynamic salts, put together by @chasegawa ; I mostly just added support for field names and made it more generic. 

This is what it can do:

1. Can be configured with a message digest algorithm SHA-512
2. Can be configured with a sql statement
3. Can be configured with a static salt
4. ... and can retrieve dynamic salts from the database table
5. ... and can retrieve number of iterations from the database table
6. Compliant with principal transformers and password encoders

The handler will:

1. Construct the message digestion algorithm prep
2. Execute the sql query to find the user
3. Add the encoded password to digest
4. Add static salt to digest
5. Locate the dynamic salt from tuple, if available, add to digest
6. Iterate over the result per configuration
7. Compare the result against password db value

Unit tests accompany the PR.

Shiro provides default impls of MessageDigest. At the end, you'd still be working with a message digest, but the impl is provided by shiro based on the algorithm provided. We do have commons codec that does this well, and I am not sure pulling another library in just to do the hashing bit for something we already have a component for is all too helpful....unless shiro does something monumentally better than codec to justify the leap.