Indexing job now allows pause, resume, limit, etc

Basically, all the UI options now actually do something.

A user can now configure a start time for the indexing job and it'll
run. The user can also disable indexing altogether and limit the
runtime. While a job is running, the user can manually stop it at any
time.

Increased the thread count from 3 to 4 for extra safety margin due to
the way that time limits are implemented. The execution time limit is
implemented by the index job adding a trigger to the scheduler that'll
fire after the execution time. Using the index job itself as a trigger
listener, when the time limit trigger fires, the index job listener will
run and interrupt itself.

Also note that the Quartz cron scheduling implementation isn't fully
cron like in that it doesn't support both a day-of-week and day-of-month
value being used at the same time. The '?' character must be used in one
of those fields in place of values such as '*'. This causes problems in
that we have to convert the jqCron set values into something that is
compatible with Quartz.
Database initialization.

Configures the building block to create 3 tables:
1. files - stores the result of the indexing job, whether each file is
	tagged.
2. queue - stores the remaining files to be processed.
3. hosts - stores all the hosts that this building block is running on,
	allows the admin to select which one to run the index job on.