Also upgrade Enzyme from 2.7.1 to 3.1.1
Most notable change here is that React.PropTypes is now
moved to a separate package and referenced just by
PropTypes. So this needed some import and linting changes.
This adds the upgrade to Bootstrap 4, and some basic changes and
some CSS tweaks we needed to keep out UI consistent.
The simpler changes are things like:
* Classes that were renamed
* Adding classes that are now needed (dropdown-item, etc)
* Change an item from a button to a span
* Changing order of items (modal header close button, etc)
* CSS class syntax changes
The other changes are lots of CSS padding, margin, font and
other spacing tweaks.
The webpack-md5-hash plugin attempts to make the generated hashes
less susceptible to churn when chunks haven't actually changed.
However it requires careful use and clearly wasn't set up correctly,
since the manifest file hashes were always the same regardless of
content, causing stale files and runtime errors in production.
Once Neutrino v6 is released, we can use its new in-built support
for caching to save having to implement this ourselves.
Previously a forgotten-about `local.conf.js` (which is git-ignored)
would override the URL passed by the `SERVICE_URL` environment variable.
With webpack and environment variables, there is no need to use a local
config file to control the API URL, so we can now remove this footgun.
contribute.json is intended for consumption via the deployed site, so
does not need to be in the repo root. Everything in `ui/` will be copied
to `dist/` so once moved, `contribute.json` no longer needs to be listed
explicitly - and with Neutrino v5 this will allow for even more
simplification later.