Switch to use htmlElement and reactjs

@joefitzgerald, This is the fixed branch.  I screwed it up real bad this morning trying to pull it out of the merge process.  I finished the merge and this should be the correct completion. 

Pay special attention to the select-list-element.  I still have the react component attached.  There are a couple weird things you will probably note.

First, the mouse events are kind of f'd up since they can't be attached using the react eventing.  This is because the editor will grab the event before it gets to the document where the react events get bound.
The other weird thing is the composition events in the input.  React can't bind these events so I had to bind them manually and report back the composition state to the model.

Feels like we should explore using https://github.com/atom/service-hub for provider registration, so that we can further evolve the API in a backwards compatible way.