Feat Path Options

## Changelog
(diff looks huge but most of them are tests)

**Generator Changes**
* Add `options.json` to define options with [Yeoman options](http://yeoman.io/authoring/user-interactions.html). 4 new options:
```
  --app-path
  --dist-path
  --e2e-path
  --tmp-path
```
* Refactor `init` -> `constructor` to make options definition available to `yo gulp-angular --help`
* Move `appName` formatting to `format.js` instead of init.
* Add `retrieveOptions` in `index.js` to parse options in cases with no `--default` & no `skipConfig`. This function for `options` is similar to `askQuestions` for `prompts`.
* Add `mock-options.js` with a defaults value to make it similar to `prompts`, for easy use in tests.
* Add `utils.js` for some path processing functions.
* Add a property to `props`: `props.paths` is a hash, where keys are folder in generator template & values are dest folder for generated app.
```
  {
    `src`: `public`,
    `e2e`: `tests/e2e`,
    `tmp`: `.tmp`,
    `dist`: `dist`
  }
```
* Use `utils.replacePrefix()` for each dest str in `write.js`

**Tempate changes**
* All static paths are replaced with template variables or gulp variables.
* Gulp refers to `.yo-rc.json` to get paths data.

**Test Changes**
* Change some structures in `test-gulp-task-inception.mocha.js` & `test-files-generate.mocha.js` to enable different options for each case.
* Fix test suite message, differentiate between options & prompts. Options are flags: `--skip-install`, `--app-path=...`, prompts are questions.
* Add 1 case for `test-gulp-task-inception.mocha.js` with different paths.
* Add 1 case for `test-files-generate.mocha.js` with different paths.
* Add `tests-utils.js`.

**Mics**
* Update `README.md`.
* Commits are already squashed & rebased to master, all protractor tests also passed.

Further refactor suggestion:
* There is now options for each case so `test-options.mocha.js` should just be merged into `test-files-generate.mocha.js`
* `test-write-files` is quite troublesome, there are cases that file is both dotfile & template file, or a double dash __ file is a template file that will break the assertion. Plus the assertion isn't really important as most file assertions are already done in `test-files-generate.mocha.js`. So I suggest remove this test.
Btw do you think we should support absolute path config? 
It will be powerful that way but it could be troublesome to implement & maintain. 
For example `this.destinationPath` can mess up with the absolute path, also the relative path between folders can be painful. 
So I 'convert' absolute path to relative, but that's not right, I should do a validation instead.

Fixing now. Thanks!