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. 
@lazd The `ember-cli-htmlbars` module [entrypoint](https://github.com/rondale-sc/ember-cli-htmlbars/blob/master/index.js) is all in the format of broccoli, let me play around to see if it is ok to use the official instead of [my forks](https://github.com/mattma/ember-cli-htmlbars/blob/master/index.js). entrypoint is a simply compiler function. Well, that may be easy, but here is the tricky area. 

I have to make [this change](https://github.com/mattma/ember-cli-htmlbars/blob/master/compile.js#L23) then the [original](https://github.com/rondale-sc/ember-cli-htmlbars/blob/master/compile.js#L23).  It is because, we are passing the [object](https://github.com/lazd/gulp-handlebars/blob/master/index.js#L32), but `ember-cli-htmlbars#0.5.3` expect a boolean, false in our case. But when we pass an empty object of `compilerOptions`  in `index.js`, `{}` always evaluate true, so that incorrect output shows. I have to add additional checker for the empty object case.