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.

The idea is that both prefix and suffix are optional. It doesn't make sense to create a class with both value as null, but it isn't possible to provide options through ctors to just set one and not the other. This is how we can keep both optional.