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.
I wanted to remove trailing slashes as well, for example `'../../`' should be `'../..'` but `path.normalize` differentiates the two & leaves them the same as they are. 

For prefix slash I wanted to force all path to be relative so I tried to remove prefix slash. So the above was one line solution that removes all kind of slashes & also normalizes path. 

Surprisingly this fails on windows, then I will switch to `path.normalize` & remove `path.sep` if there is `path.sep` as suffix, also use `path.sep` on test.. I will test this on Windows as well.