Added the ability to include custom headers in the filename

This PR includes the ability to specify custom headers that should be part of the filename.  For example, you could ask mockserver to include the `Authorization` header, so you can "login" as different users and see different results, like so:

```
var mockserver = require('mockserver');
mockserver.headers = ['Authorization'];
// user mockserver like normal
```
Now, you can have files like this:

```
secure/GET.mock -> 401 NOT AUTHORIZED
login/POST.mock -> returns an auth token for client to store
secure/GET_Authorization=TOKEN.mock -> 200 OK
```

PR includes updated docs and tests, as well.

I also took the liberty to rewrite the tests to use a single function to set up and run the mock tests, to make it easier to focus on the differences.  :smile: 

OK, here's two alternatives:

Using Permutations:
```js
        var content,
            permutations = [[]];
        if(headers.length) {
            permutations = Combinatorics.permutationCombination(headers).toArray().sort(function(a, b) {return b.length - a.length});
            permutations.push([]);
        }
        while(permutations.length) {
            // same as above
        }
```

Using the Power Set (no permutations):
```js
        var content,
            combinations = [[]];
        if(headers.length) {
            combinations = Combinatorics.power(headers).toArray().sort(function(a, b) {return b.length - a.length});
        }
        while(combinations.length) {
            // same as above
        }
```

Permutations:
* Pro: end user does not have to worry about header order
* Con: number of elements grows insanely fast

Combinations:
* Pro: fewer elements
* Pro: enforces a consistent file naming based on watched header order
* Con: end user has to match headers order to input order