chore(tree): re-organize tree

New style:

src:           root source directory
  core:        base library code, shared by each build
    api:       base code for speaking to the Inbox API
    utilities: reusable helper routines to assist in API development
  vanilla:     code specific to "VanillaJS" (no-library) build
  angular:     code specific to AngularJS build [TODO]
  ...etc
feat(angular-inbox): build AngularJS version of inbox SDK

This Angular version is nearly identical to vanilla inbox.js, with the exception that it will use
$q rather than native promises, in order to tie directly into the AngularJS life-cycle and update
DOM bindings when responses arrive.

This is a work in progress, as there are some useful additions which I would like to add:

1. Provide a better XMLHttpRequest mock --- using Angular's XHR stuff is not entirely desirable, due
to suffering from a variety of bugs and quirks, and potential difficulty making the API simple.
However, requiring you to use $scope.$digest() to flush responded promises, as well as sinon's mock
XHR, is a bit of a hassle in terms of testability, so it would be good to improve this.

2. Don't check angular.js and angular-mocks.js into the tree. I would like to have a CI server testing
against multiple releases of Angular in the future. Work has been done on writing a Karma plugin to
fetch libraries from bower before running tests, however that work is blocked on a change to Bower,
which currently sucks at programmatically fetching specific versions when other versions are already
checked out.

Beyond this, the rest of the work is really just adding some additional sweetness to the main library,
in order to make interacting with the webservice that much better.
style(angular): improve style of built angular-inbox.js

Don't wait for angular to be available to set up the core library, just do it when the script is loaded.

Closes #10
Closes #12
chore(jshint): fix jshint linting fore previous changes
chore(jshint): disallow overwriting most global variables
refactor(angular-inbox): make browserify exports work better

Make sure we have a 'require()' method, and actually export the module for both Browserify and Require.js
refactor(inbox.js): add RequireJS and Browserify exports to vanilla inbox.js
feat(datetime): add utilities for processing dates and times
feat(types): add file for type-checking utilities

Currently, this only contains IsArray, but it may be useful to add additional tools later.
feat(filters): add InboxURLFilters to convert filter objects to query strings

The method is fairly complex, and will hopefully be simplified over time.
feat(namespace): InboxNamespace.threads() can now query with filters

Closes #14
feat(InboxAPI): implement InboxAPI.namespaces() to fetch all namespaces

namespaces() will query all namespaces available to the authenticated user. It is not currently
possible to filter the response, as the server does not implement a way to do this for namespaces
yet, but this would be a nice thing to implement eventually.
fix(angular-inbox): don't hoist `angular` import from commonjs importer

`var angular = require(...)` will be hoisted to the root of the function, and affect the global check for `angular`...

This CL fixes this.
fix(inbox.js): remove pointless `angular` parameter from amd exporter

This was copy/pasted from the angular exporter, and is not really needed.
docs(examples): implement example application, with initial first example

The examples are bare-bones and do not include any styling or prettification, they exist merely to
test how the library works in a real application, and have already uncovered some bugs (as seen in
the previous commits in this CL!)

Closes #15
fix(namespace): remove definition of InboxNamespace#threads() from namespace.js
feat(namespace): allow InboxAPI.namespaces() to update an existing array

This might not be necessray in the future, but it is potentially useful to allow a single array to
be updated when namespaces are pulled, so that it's unnecessary to update all references to the
array in an application.
feat(threads): allow array of threads to be updated in InboxNamespace#threads()

Similar to change for InboxAPI#namespaces(), allows an application to maintain a reference to their
original array, and allows references to objects which persist across calls to remain the same.
fix(filters): don't process filters if filter object is an array
feat(threads): InboxThread#sync() allows thread to be updated from server

Similar to the changes to `InboxAPI#namespaces()` and `InboxNamespace#threads()`, the new method
allows a single Thread to be updated by making a new request to the server, and merging properties
from a successful response into the existing object.

Currently, this will only replace or add new properties, and will never remove old properties from
an existing object. However I believe it will be desirable to have the capacity to delete old items
which are not included in the pulled response. The ability to accomplish this should be forthcoming.