CLI for Windows Azure Mobile Services

Dev Estimate: 3
Test Estimate: 0

This adds support to the CLI for managing Windows Azure Mobile Services. The change includes code and tests. 

The new command `azure mobile` enables:
* creating and deleting mobile services: `azure mobile create` and `azure mobile delete`
* inspecting services: `azure mobile list` and `azure mobile show`
* managing mobile service configuration, including OAuth and push settings: `azure mobile config`
* managing mobile service tables (adding and deleting tables, removing columns, adding and removing indexes, setting operation permissions): `azure mobile table`
* accessing table data: `azure mobile table data`
* accessing service logs: `azure mobile log`
* uploading and downloading scripts for table operations, scheduler, and shared (APNS): `azure mobile script`

The 2.5k lines of code is marginally more exciting than a resource file. The interesting part worth a look is the tests. I am introducing a mechanism that allows the same set of tests to be run either as a scenario test against the live Windows Azure endpoints, or as a unit test against a mocked HTTP layer. 

When run against the live Windows Azure endpoints, the tests form a scenario test consisting of 32 steps covering the lifetime of a mobile service:

```
  ․ azure mobile create clitest88f15514-d69b-49de-914a-911e6d4f6de6 tjanczuk FooBar#12 --json (create new service): 46785ms
  ․ azure mobile list --json (contains healthy service): 1839ms
  ․ azure mobile show clitest88f15514-d69b-49de-914a-911e6d4f6de6 --json (contains healthy service): 1231ms
  ․ azure mobile config list clitest88f15514-d69b-49de-914a-911e6d4f6de6 --json (default config): 1559ms
  ․ azure mobile config set clitest88f15514-d69b-49de-914a-911e6d4f6de6 facebookClientId 123 --json: 4167ms
  ․ azure mobile config get clitest88f15514-d69b-49de-914a-911e6d4f6de6 facebookClientId --json (value was set): 1585ms
  ․ azure mobile table list clitest88f15514-d69b-49de-914a-911e6d4f6de6 --json (no tables by default): 1793ms
  ․ azure mobile table create clitest88f15514-d69b-49de-914a-911e6d4f6de6 table1 --json (add first table): 3619ms
  ․ azure mobile table list clitest88f15514-d69b-49de-914a-911e6d4f6de6 --json (contains one table): 1290ms
  ․ azure mobile table show clitest88f15514-d69b-49de-914a-911e6d4f6de6 table1 --json (default table config): 2080ms
  ․ azure mobile table update clitest88f15514-d69b-49de-914a-911e6d4f6de6 table1 -p *=admin,insert=public --json (update permissions): 4826ms
  ․ azure mobile table show clitest88f15514-d69b-49de-914a-911e6d4f6de6 table1 --json (updated permissions): 38356ms
  ․ azure mobile (add 5 rows of data to table with public insert permission): 3163ms
  ․ azure mobile table show clitest88f15514-d69b-49de-914a-911e6d4f6de6 table1 --json (new rows and columns): 2051ms
  ․ azure mobile table data clitest88f15514-d69b-49de-914a-911e6d4f6de6 table1 --json (show 5 rows of data): 1621ms
  ․ azure mobile table data clitest88f15514-d69b-49de-914a-911e6d4f6de6 table1 --top 1 --json (show top 1 row of data): 1784ms
    azure mobile table update clitest88f15514-d69b-49de-914a-911e6d4f6de6 table1 --deleteColumn foo --addIndex bar,baz -q --json (delete column, add indexes):  4780ms
  ․ azure mobile table show clitest88f15514-d69b-49de-914a-911e6d4f6de6 table1 --json (fewer columns, more indexes): 2024ms
  ․ azure mobile script list clitest88f15514-d69b-49de-914a-911e6d4f6de6 --json (no scripts by default): 2954ms
  ․ azure mobile script upload clitest88f15514-d69b-49de-914a-911e6d4f6de6 table/table1.insert -f /Users/tomek/azure-sdk-tools-xplat/test/commands/mobile/table1.insert.js --json (upload one script): 4234ms
  ․ azure mobile script list clitest88f15514-d69b-49de-914a-911e6d4f6de6 --json (insert script uploaded): 2865ms
  ․ azure mobile log clitest88f15514-d69b-49de-914a-911e6d4f6de6 --json (no logs by default): 2047ms
  ․ azure mobile (add 5 more rows of data to invoke scripts): 986ms
  ․ azure mobile log clitest88f15514-d69b-49de-914a-911e6d4f6de6 --json (10 log entries added): 3009ms
  ․ azure mobile log clitest88f15514-d69b-49de-914a-911e6d4f6de6 --type error --json (5 error log entries added): 1558ms
  ․ azure mobile log clitest88f15514-d69b-49de-914a-911e6d4f6de6 --top 3 --json (list 3 top log entries): 1813ms
  ․ azure mobile table delete clitest88f15514-d69b-49de-914a-911e6d4f6de6 table1 -q --json (delete existing table): 6243ms
  ․ azure mobile table list clitest88f15514-d69b-49de-914a-911e6d4f6de6 --json (no tables after table deletion): 1389ms
  ․ azure mobile table delete clitest88f15514-d69b-49de-914a-911e6d4f6de6 table1 -q --json (delete nonexisting table): 1679ms
  ․ azure mobile delete clitest88f15514-d69b-49de-914a-911e6d4f6de6 -a -q --json (delete existing service): 8980ms
  ․ azure mobile list --json (no services exist): 1359ms
  ․ azure mobile delete clitest88f15514-d69b-49de-914a-911e6d4f6de6 -a -q --json (delete nonexisting service): 1127ms

  ✔ 32 tests complete (3 minutes)
```

In this mode the tests take a few minutes to run.

Alternatively, the very same tests can be executed as unit tests against a pre-recorded HTTP traffic in just a few milliseconds. 

```
  ✔ 32 tests complete (164 ms)
```

Comparing the results of a unit test run and scenario run helps narrow down the source of a potential issue and allows for quick validation of CLI changes against the protocol. 

To run the tests as unit tests against pre-recorded traffic (the default):

```
npm test
```

or (to run just the azure mobile tests):

```
mocha -u tdd -R list test/commands/cli.mobile-tests.js
```

To run the tests against live Windows Azure endpoints:

```
export NOCK_OFF=true (or SET NOCK_OFF=true on Windows)
npm test
```

or (to run just the azure mobile tests):

```
export NOCK_OFF=true (or SET NOCK_OFF=true on Windows)
mocha -u tdd -R list test/commands/cli.mobile-tests.js
```