insertIntoFile(pathRelativeToProjectRoot, contentsToInsert, providedOptions) {
    let fullPath = path.join(this.project.root, pathRelativeToProjectRoot);
    return insertIntoFile(fullPath, contentsToInsert, providedOptions);
  }
Inserts the given content into a file. If the `contentsToInsert` string is already
    present in the current contents, the file will not be changed unless `force` option
    is passed.

    If `options.before` is specified, `contentsToInsert` will be inserted before
    the first instance of that string.  If `options.after` is specified, the
    contents will be inserted after the first instance of that string.
    If the string specified by options.before or options.after is not in the file,
    no change will be made.

    If neither `options.before` nor `options.after` are present, `contentsToInsert`
    will be inserted at the end of the file.

    Example:
    ```
    // app/router.js
    Router.map(function () {
    });
    ```

    ```
    insertIntoFile('app/router.js', '  this.route("admin");', {
      after: 'Router.map(function () {' + EOL
    }).then(function() {
      // file has been inserted into!
    });


    ```

    ```
    // app/router.js
    Router.map(function () {
      this.route("admin");
    });
    ```

    @method insertIntoFile
    @param {String} pathRelativeToProjectRoot
    @param {String} contentsToInsert
    @param {Object} providedOptions
    @return {Promise}