create and get api keys for an account

trying out nock in tests
implement cache regions

there should be a new Cache for every cache region
rewrite account tests without knock

just stub out the request executor

it wasn’t obvious how to get nock.get and nock.post to accept a regexp
always requested encrypted secrets when getting api keys
Application.getApiKey

tests to assert that:
 
* we get a single ApiKey instance back

* the cache will transparently find and cache any nested items in a collection response
don’t expose instantiate, use base64 url safe encoding for salt
caching of api keys, un-encrypted, then decrypt on get
fix tests, start asserting cache requirements in tests
messy first implementation of Application.authenticateApiRequest

did quick integration testing with a demo connect app, seems like it’s
doing the right thing
ability to set and get scopes on tokens
ability to set ttl
cleanup: break out authentication strategies and errors into files
misc cleanup
Merge branch 'master' into api-auth1

Conflicts:
	lib/cache/CacheHandler.js
	lib/resource/Account.js
	lib/resource/Application.js
	package.json
	test/sp.resource.account_test.js
	test/sp.resource.application_test.js
fix package.json to not use caret operator

older versions of npm, of which travis uses, are not compatible with the
new caret style for npm semvars

so i’m changing this one back to a tilde so that we don’t break our 
customers, or travis builds

fyi this could also be done to fix travis:

http://tech.vg.no/2014/05/30/npm-travis-node-and-the-caret-operator/
fix decryption strategy for node v0.8.0

decryption was failing in node v0.8.0

reading the node change log, it seems there have been lots of fixes
when it comes to how the input buffers are handled

changing the raw value buffer from hex to binary is just a lucky guess,
it got it working in 8 on my mac
initial integration tests, don’t run on travis yet

I want to write some integration tests for this API auth work, so I need
to carve out some space for that

In this first implementation you need to run `grunt it` to run them.  

I will configure this to run on travis at a later time, I need to figure
out how to exclude ITs if it’s a pull request from a fork
token result fixes

* getTokenReponse is now returning the format expected by http://tools.ietf.org/html/rfc6749#section-5.1
* added our app href to the JWT
* expires_in and timestamp are now second values, not millisecond
AuthRequestParser for getting data from the request

allow us to look at request body, or url params
return decrypted api key after creation

several fixes/refactors to support that