Implemented Promise Tracker

Promise Tracker will track the number of thens called once an
initial promise has been returned. It also provides beforeThen
 and afterThen callbacks.

Scan Barcode controller also has access to a progress bar
Improved promise tracker

- Promise tracker now doesn't overwrite original promise, creates a new
one
- Promise tracking added to kit, select, and default controllers
Merge pull request #317 from jbeast/promise_tracker

Promise tracker
Moving component configuration into context.

Templates for manifest come from context.
Printers come from context.
More componentisation

Drop zone handling is now a component.
Reception component becomes a generic process choice.
New reception component that uses the above to get the old behavior.
Lab activities becomes a process choice with re-racking.
Whole load of configuration changes.
Refactored re-racking controller into a component.

Renamed user-barcode into barcode-scanner.
Use underscore.string for padding barcodes.
Moved all of the re-racking controller code & view into component.
Removed redundant deferreds from re-racking model.
Added a jQuery helper for functions that ignore events.
Force the load order of jQuery & bootstrap-collapse.

Bootstrap's collapse functionality requires jQuery to be available, but
requirejs doesn't guarantee the order of these, so sometimes errors
would appear in the console.  This shim fixes that issue.
Create a labelling component

Added success & info to the list of alerts.
Refactored label printing into labelling/printing.
Correct namespacing for printing events.
Moved barcode-scanner behaviour into labelling/scanning.
Support the ability to filter the printer list.
Error/status messages broadcast via events.