Genericize the change list and add inter-change links

Make the change list display not only changes for a project, but
any arbitrary set of changes represented by a query.  This will
enable searching, inter-change linking, and custom dashboards.

The search syntax is extremly basic at the moment, but will be
extended to attempt to match the Gerrit webui search syntax as
closely as possible.

Use the new feature to implement a new kind of commentlink that
matches on Iabcdef style change-ids to "search" for matching
changes.

Change-Id: Icbcb166962fd96718ab56eb4118fc5ea43a4ba8b
Add a philosophy note about OpenStackisms

Note that Gertty is for all Gerrits, not just OpenStack's, and so
should not assume any OpenStack-specific configuration.

Change-Id: I3f49c7c6589c136785f7d1d698a6dab16dbf0d35
Make the open change dialog a search

The "Open change" dialog now supports the full search syntax (which
is still just a placeholder).  It is also slightly more robust
about dealing with non-local changes when offline.  The same checks
are now applied to inter-change links.

Change-Id: I3edf6dd66dc95b60eb7507ece813376f08815f80
Add custom dashboards

Use the new generic change list feature to support custom dashboards
based on search queries.

Change-Id: Iea339de591da38bccab54c2e044ef7b94d6789cb
Add reviewkeys

Reviewkeys are a customizable shortcut for leaving predefined
votes on a change.  For example, if you want to leave a +2
review with no comment, you might simply hit the "meta-2"
key.  The following configuration block is recommended for
use with OpenStack's Gerrit:

  reviewkeys:
    - key: 'meta 0'
      approvals: []
    - key: 'meta 1'
      approvals:
        - category: 'Code-Review'
          value: 1
    - key: 'meta 2'
      approvals:
        - category: 'Code-Review'
          value: 2
    - key: 'meta 3'
      approvals:
        - category: 'Code-Review'
          value: 2
        - category: 'Workflow'
          value: 1

Change-Id: I466024d71d5b1d89fcdc32355e2a9fe13abf5c28
Fix crash on mouse click in change view

The name of the initial focus method in the hypertext widget
changed from focusItemLeft to focusFirstItem.  This would cause
a crash if the mouse was clicked in the change screen when an
item in the hypertext widget was not already focused.

Change-Id: I046115f43bdd41640ebdaf45198ff3ae4770bb97
Depend on SQLAlchemy 0.9.4 or greater

This prevents a nasty traceback and possible database corruption on systems
which have a sqlalchemy installed that is too old (e.g., fedora 20).

Change-Id: I2b60ddb1d50b5913c2cf8e5a848f26720163d47a
Closes-Bug: 123
Add refresh command

Let ctrl-r run a sync all projects task in list views, and sync
the current change in the change view.

Change-Id: I65cfb755bd387b68fe2dbd1562f149adb4421ea1
Support (most of) gerrit search syntax

Adds a parser that compiles gerrit search queries into sqlalchemy
filters to support the gerrit search syntax both in arbitrary
searches (ctrl-o) as well as dashboards.

Change-Id: Ibc8e5c180b0ca16727938725cfe6380ba7315205
Add account table

Also add support for dropping sqlite columns in migrations.

Replace any references to user names with references to account table
entries.

Change-Id: I5a147370f5ee648ddd808f699e80a7778c21d662
Use account table in search

Change-Id: Id7dd6342e50d1403cc6c9f3f2a882a2d2125e08d
Add an example gertty.yaml for OpenStack

Change-Id: I91863e4cf80bb96e81ea02374200f24c6eb4af8b
Allow the default project change list query to be customized

Change-Id: I84a5f701db52425ddbeac566eed45889a98a685b
Add a command to return to the change list

When viewing a change, map the key 'u' to return to the most recent
list of changes.  Normally this is the same as ESC, however, if
the user has followed a series of dependent changes, this will
pop the stack all the way back to the the list of changes to review.

Change-Id: I49f4f41f4b476e25f1bb83e92601597024c8c659
Add commands to go to the prev/next change in the list

When viewing a change, 'n' and 'p' will jump to the next and
previous changes (respectively) from the most recent list of changes
without pushing the current change on to the navigation history.

This streamlines the process when reviewing many changes in
sequence.

Change-Id: I31d4b30cd8d7bd6f5c5c4376033e43421fbe6c5b
Merge "Depend on SQLAlchemy 0.9.4 or greater"