Most of the production code for #37

- Created `BackgroundProcess` class with the ability to run something if
it's not running
- Added infrastructure for app startup/shutdown hooks
- Basic assimilation of WUs (create/update, with/without domain) and
tested.
- Updated crawler to note URL and title too.
Resolved #37; simplified background execution

`BackgroundProcessor` instances are just synchronized. It's simple.
Fixed gradle build issue (missing dependency for @WebListener)