ported test_system_view to WebDriver

Change-Id: I5736c826604d62f27453b26614916b5b12314ac4
move test for bz920018 to test_system_availability

Change-Id: I1289941f9f96923caf8adc1cdff4159ce13cd5ba
ported test_remove_lc to WebDriver

Change-Id: I01d636347a6833ad12166bea106b536e9e9e65b0
use localStorage instead of cookies

Change-Id: Id57b9586252dd932bd415e76e35de6895114dfbd
use Moment for datetime manipulation in JavaScript

Change-Id: Ic3ef1bea64d196d82f76be6c7ad1b6f8f538df9c
Merge branch 'develop' into new-system-page

Conflicts:
	IntegrationTests/src/bkr/inttest/server/selenium/test_system_view.py
	Server/bkr/server/labcontroller.py
"quick info" widgets on system page, nav list instead of tabs

This replaces the (very overgrown) system form with three small "quick
info" boxes. They are designed to show the most important information
about the state of the system as concisely as possible, and to provide
a shortcut for the most common operations that the user might want to do
with the system. Most importantly, the quick info boxes occupy much less
vertical space than the system form, allowing the tabs below (which are
the meat of the page) to be shown more prominently and without scrolling
down.

The horizontal tabs are replaced by a vertical nav list, since there
were more tabs than will fit in a single row.

In subsequent commits the form fields which were in the system form, as
well as all the other functionality that has accreted in there alongside
them, will be moved into new or existing tabs on the system page.

Bug: 1014438
Change-Id: Ifa987590efef6781ddc6dac217e0a35745736ec3
owner tab on system page

This replaces the Owner and Notify CC fields in the system form.

Bug: 1014438
Change-Id: I5a8a8e55b3791c07e9e41827de713673610cc57a
editable hardware details on system page

This moves the hardware-related fields which were previously in the
system form into a table (with corresponding edit modal) on the Details
tab.

Bug: 1014438
Change-Id: If60f5ebf1ec2dac8da61ddac662da6bd53c716e8
only include Bootstrap styles we are using

In particular, this omits "sprites.less" which is actually the styles
for Glyphicons, which we are not using (replaced with FontAwesome
instead). So this avoids a spurious 404 for the Glyphicons source images
under certain circumstances which I have not been able to pin down.

Change-Id: I638d51ae0d355396aaf47064e3373f0f3152ed1b
hardware essentials tab on system page

This replaces the remaining hardware-related fields from the system
form.

The distinction between "Essentials" and "Details" is that the essential
fields are needed for running Beaker jobs (such as arch), or cannot be
determined by Beaker's inventory script (such as location), whereas the
details are optional extra hardware information which can be populated
by the inventory script if desired.

Change-Id: I0822cfe40deaeaabbfea512d0bd2c653f4ea9f2e
loan tab on system page

This replaces the Loaned To field in the system form, as well as the
loan settings modal which lived inside of it.

Change-Id: I8d225c7287ffc0ed2177a7980b29e4ecdd865035
scheduler config tab on system page

This replaces the scheduler-related fields from the system form:
Condition (status), Condition Report, and Type.

Change-Id: I7f4e355162b39f9ffff64b3b8656a7ba88f59711
modal for adding new systems

The only piece of information which is absolutely required for a new
system is its FQDN, so we can make adding a new system very simple by
just requesting the FQDN and then the user can fill in everything else
using the system page.

The "quick description" widget will give some hints about the most
important settings which should usually be filled out (lab controller,
arch, power settings).

Change-Id: I33327f5976d7cd86d8b5541bb7c45a83b1c6735e
use Backgrid for system activity grid

This avoids the TurboGears DataGrid and @paginate decorator for the
system page, which gives us more freedom (for example having multiple
data grids on the system page, or to port the system page controller to
a Flask handler).

We can also defer loading the activity data until it's viewed for the
first time, which saves request processing time and bandwidth for all
the cases where the user is visiting the system page to do something
other than view activity.

Change-Id: I083a501290f9b4f504b540a7da575775a2d5a1c0
ported Reserve Workflow to Backbone, merged into a single page

Previously the Reserve Workflow was a three-step process: 1. pick distro
tree(s), 2. (optionally) pick system, 3. enter job options and submit.
This patch puts all three steps onto a single page, allowing them to be
completed in any order. In particular, this now lets us link to the
Reserve Workflow with the system pre-filled so that the user can pick
a distro and enter their job options. So we can link to the Reserve
Workflow from the system page, which is the ultimate goal of this patch.

The distro selection part of the widget is also extracted out so that it
can be re-used on the system Provision tab.

Change-Id: If2678f75e09bb42927730153bb6e8252f5b82ead
added "Reserve time" field to Reserve Workflow

This was available on the system Provision tab but never on the Reserve
Workflow, where it is more relevant.

Change-Id: I7fcfbab1894d3b1fc13e16709c23bf2d19210174
Provision tab on system page now always provisions directly

Also ported it to Backbone.

This is a second attempt at the final solution for bug 855333. That bug
was ultimately caused by the various ways that the Provision tab changed
its behaviour according to the state of the system.

Now the Provision tab always provisions directly, not through the
scheduler (we can link to the Reserve Workflow for that now). It always
appears regardless of the Automated/Manual status of the system. The tab
will be available whenever the user is allowed to provision the system:
typically, while they have reserved it or if they are its owner (or
granted in its access policy).

Change-Id: I5839e33fb60c6404302d0c21bc9d4c40870a5070
Take and Return buttons in system quick info

These replace the buttons which previously lived in the User cell of the
system form.

Change-Id: I0bed831fd5d7a6a3d86423d9d7f241a2c9a37e7d
request user confirmation before provisioning

Provisioning is a destructive operation (even more so than power
control, which we already require one or sometimes two JavaScript
confirmations for) so it warrants a confirmation dialog.

Change-Id: Iee48be9c16ee34f2515bdd059162ba8a325c7ddd