Adds an Expression class to abstract away parsing of input

- Expression can be used to convert between strings and Process/Mode
  pairs, where Mode is the type of view desired (inspect, probe).
- Changed the list of sessions into a map, keyed uniquely by name (with
  a number appended when collisions would otherwise occur).
- Sessions can be and are now referred to by name, both by the system
  and user (the user can use the name to distinguish between multiple
  sessions open at once).
- Eliding in Process is optional - new method fullText for a non-elided
  version. Used for "copy" and for converting Process to String in
  Expression.
Removes lazy-loading in TransitionModel

The lazy-loading of items in the TransitionModel is completely
unnecessary and was broken by 8887d26. Instead of fixing it, it makes
more sense just to remove it.
Implementation of process inspector.

Todo: Some way of displaying events. This only lists the processes and
its components.
Fix equality test for processes.
Implements a tool tip for PAlphaParallel in inspector

Tool tips for other operators will be necessary, but this is a proof of
concept. Using HTML table to make it easier to look at than just a
string.
Remaining tool tips implemented

Most of the tool tips are just the name of the operator, but ones which
have events have special tool tips.

Also added the ability to create events from strings in preparation for
the "Why Not" feature.
Adds probe/inspect options to process tree context menu

Options for probe and inspect (new or current tab) have been added to
the menu. The default behaviour on double clicking an item in the
session tree is now to open it in the current tab, not a new tab.