Define `self` and `window` global objects in the combined JS code so that:

* components making use of `window` can actually do it without the trick found in the `components.js` file of the dummy test app
* components/files packaged as CommonJS modules by browserify (using browserify-rails for instance) can successfully use `global`

 For this second point, this fix is necessary because of the self-calling function browserify uses to wrap code that uses the `global` variable:

 ```ruby
 (function (global){
     global.MyComponent = React.createClass({ ... });
 }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
 ```
If `window` was used instead of `global`, it would still need the fix or the workaround found in the tests' dummy app as mentioned.
Comply to FB's style
Remove "hacky" code now that window is defined inside the server-side Javascript VM
raise any JS error when prerendering
Merge pull request #84 from digitalcuisine/happy-browserify

Remove need for global workaround and make Browserify happy
Merge pull request #92 from rmosolgo/prerender-errors

Raise any JS error when prerendering
Allow react_component to accept JSON strings

Rails ships with a useful JSON builder that makes rendering to strings
of JSON via templates very easy, but rendering from objects to json
not quite so easy. It's used by a lot of Rails apps as the default way
to serialize objects to JSON.

This allows render_component to take a string as the props argument,
and instead of calling #to_json on it, just pass it straight through
to the renderer.

Basically, this allows syntax like the following:

```ruby
react_component(
  'Todo',
  render(template: 'todos/show.json.jbuilder', locals: {todo: @todo}),
  {prerender: true}
)
```
Merge pull request #95 from xionon/jbuilder-integration

Allow react_component to accept JSON strings
disable the Turbolinks cache, fixes #87
set unmount event based on Turbolinks version
log warning in development if we disable Turbolinks cache