Add an OutputStream interface for JNCryptor

This currently just writes version 3.  It's possible the name should be changed to reflect that.  Or, perhaps some of the existing code could be refactored so that version differences are handled by an external utility class, if that's even possible.  I'm not sure what changes v4 will require.

I included a number of constructor methods where people could specify custom Providers (or registered provider names), given that it's possible some platforms could need faster implementations which could exist separately.  These can be removed if people think it's overkill.

I changed one AES256JNCryptor static method to be package private so I could call it from the output stream class.  It's possible there is some other code duplication which could be removed by package-exposing some other methods or constants.

Test cases and some javadoc is included.  Also not sure the indentation is the same as existing files.