Reload all dependent JS when files change

Use a custom watcher/reloader middleware to find all the dependent
files of component_filenames and watch them for changes.

The reloader sits outside of the Rails stack, but makes use of
ActiveSupport::FileUpdateChecker.

This has a few benefits:

1. Non-jsx files can easily be watched. For example, changes to
   components.js and other helper files are detected.

2. Newly required files can be detected and added to the list of
   watched files for future updates.

3. We don’t force Rails to reload its own Ruby classes when only .js
   or .jsx files have changed.

One potentially controversial change, which didn’t seem to provide
much benefit before:

- Moved the concatenated source files for components.js and react.js
  out of the app config. They are now encapsulated in the
  after_initialize block.
We are catching multiple files, but it ends up as a single large source block. So I have renamed to `combined_components_source` to better document its purpose.