add `opts.compiler` allows third party to override the internal compiler

I read the comments that @lazd made in other posts. Here is my version of rolling out the User custom compiler. 
Why can't we pull from npm here? It's bad practice to pull from `master` as it is unstable, and it looks like [the latest release 0.5.3 came out 2 days ago](https://www.npmjs.com/package/ember-cli-htmlbars), so it should be up-to-date for our purposes.

```js
"ember-cli-htmlbars": "^0.5.3"
```