Nesting objects to create a hierarchical API.

First pass at creating a nested API of objects.

**IMPORTANT - #3 needs to be merged before this branch**

Status: **Opened for visibility**

Reviewers: @ericmuyser 

## Changes
- Nested objects with common functionality
- Added tests

## How to test-drive this PR
- checkout this branch
- `npm install`
- `bower install`
- `grunt build`
- `grunt test`