chore(.gitignore): ignore *.swp files
feat(InboxAPI): add method `appId()` to InboxAPI, returning configured appId
fix(INFile): update uploadFiles() methods to match API chagnes in Inbox

Posting a file to Inbox will now return an array in the response. It is not currently supported
to upload multiple files in a single API call in Inbox.js yet, but may be possible in the future.
refactor(INModelObject): add convenience method for reloading models with callback

In order to allow a way of reloading a model from the server, without creating another Promise,
it is now possible to run `reloadModel(INModelObject, callback(error, data))`, to perform the
update. Useful when nested requests are needed, without creating an additional promise.

Currently this API is unused.
feat(INThread): add methods for updating thread tags

INThread#updateTags(), and convenience methods INThread#addTags() and INThread#removeTags(), are each
used for updating a thread with new tags, or removing old ones which are no longer needed.
test(INThread): refactor creation of thread mocks in test suite
feat(INThread): implement INThread#hasTag() method

Simple routine to determine if a given thread has a particular tag. O(n).
refactor(INThread): implement helper method for requesting collections owned by threads
feat(INThread): implement INThread#drafts() method

Simple routine for fetching collection of draft messages, built on threadRequestHelper().

Tests to be implemented later
feat(INFile): implement routine for downloading file asynchronously

INFile#download() enables authors to download a file without relying on the browser, and with
the benefit of being able to send authentication information easily.

This API is a work in progress and is prone to change, do not treat as stable!
fix(INFile): address changes to API, add method to fetch file data

INMessage#getAttachments() will fetch files attached to the message from the server, using the
typical motif of these API request methods (supports passing in an array of files to update,
as well as an object of filter keys).

INFile#download() will attempt to download an attachment asynchronously (requires XHR2)

INMessage#attachmentIDs has been removed, and replaced with INMessage#attachmentData, containing
all of the data for each file.
fix(INNamespace): correct url for INNamespace#tags()

Previously was requesting /n/<namespace_id>/threads, should be /n/<namespace_id>/tags
fix(capitalizeString): return value from capitalizeString()

Also adds tests which were previously missing.
chore(namespace): converting tabs to spaces
chore(package.json): upgrade `gulp-jscs` to v1.1.0
chore(package.json): add `merge-streams` dependency

Needed for gulp-jscs task which needs a separate config for tests, to have slightly more lenient
linting rules.
chore(.jscsrc): add .jscsrc for test suite
chore(.jscsrc): don't require curlies for if() statements

Normally, I would like to require curlies for if() statements, but I'll catch these during review.

For simple return-statements, I don't want to require curlies, as it makes the code bigger.
chore(.jscsrc): don't validate JSDoc

dgeni does this for us, we aren't using it yet but that's the plan.
chore(.jscsrc): don't require curlies for case/default statements