reactDirective accepts react components

@davidchang this adds whats suggested in #10, so React Components can be passed directly to `reactDirective` like this (strings are still supported): 

```javascrtipt
app.value('HelloComponent', React.createClass({
  render: function() {
    return <span>Hello</span>;
  }
}));

app.directive('hello', function(reactDirective, HelloComponent) {
  return reactDirective(HelloComponent);
});
```
To get this working I refactored the code a little by
 * Pulling out common functionality 
 * Not using `reactComponent` inside reactDirective` but call `React.renderComponent` instead

NOTE: this also includes the tests from #14