Up 3732 tin can api

PR for the TinCan API impl   (https://issues.jasig.org/browse/UP-3718)

- Single on/off switch in properties
- Basic TinCan statement creation
- Basic Auth + OAuth signature authentication support
- Event filtering
- Initial connectivity request via/ activities/states part of the API
- LRS statement submission
- optional batched LRS statement submission
Looks like a failure throws away the list of statements.  Should this handle the error a different way such as re-trying a few times, re-inserting at the front of the queue, holding onto them for a period of time and retrying next cycle, etc?  Is it OK to throw them away with an error message?  Obviously at some point they would need to be discarded or persisted somewhere, but is a single failure sufficient to discard?  At minimum needs a big todo at improving error handling if the information is important.