Send transaction

Adding a sendTransaction method, which handles the **ecommerce** plugin side of our analytics logging.

The approach I took was to make it easy for developers to add this information, and the method ensures the calls are formatted correctly with:
- the correct transaction ID for both the transaction and the items
- required fields are validated
- parameters are stringified

It also ensures that if errors occur, the user is given immediate feedback via error messages.

Status: **Ready to merge**

Reviewers: @tedtate @donnielrt @ericmuyser 
JIRA: https://mobify.atlassian.net/browse/CSOPS-852

## Changes
- added sendTransaction method
- added __validateObjectSchema method
- added __stringifyPropertyValues method
- added unit tests

## How to test-drive this PR
- checkout this branch
- run `grunt test`
- integrate into project that has ecommerce:addTransaction and ecommerce:addItem already, and ensure this works.

This really seems like we're just re-implementing the GA API by validating the data coming into here. How does GA handle it when required arguments are not passed? Could we just leverage that code? We don't want to have to keep up with GA's codebase incase they change anything in the future.