Fix JSXTransformer when therubyracer is used by execjs

The `execjs` gem will try to use native v8 js library [therubyracer](https://github.com/cowboyd/therubyracer) if it is available. Otherwise `execjs` will try to execute external `node`, which is the case in current tests.

The problem is, `node` has `global` defined but `therubyracer` doesn't:

```ruby
require 'v8'
require 'execjs'

context = ExecJS.compile('') 
puts context.class # ExecJS::RubyRacerRuntime::Context
puts context.eval('global')  # ReferenceError: global is not defined (ExecJS::ProgramError)
```

JSX cannot work properly with neither `global` nor `window` defined. This pull request fixes it by defining `global`. I also added tests for the change and fix some other small issues I found.

For adding `gemfiles` directory to `.gitignore`, I know the community may suggest include Gemfile and Gemfile.lock in source control. But here is different. Reasons:

- gemfiles are generated by appraisals, not manually created. files generated by auto tasks should live outside source control
- .lock files contain developer-dependent path, "/Users/poshannessy/FB/code/react-rails"
- other project benifits from .lock file is because they can use same gem version as the developer, to avoid potencial problems. however, gemfile{,.lock}s are only used for testing purpose here, i think it's a good idea to not lock any versions but always install the latest. if another gem update acturally breaks this project, know earlier.

That being said, the Gemfile and Gemfile.lock at the root directory should not be removed.