Nesting objects to create a hierarchical API.

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