Some steps towards including CPP11 in the herd model. Not working yet,
but it does at least build.
Neatened up code.
Added a couple of explanatory comments.
Lots of changes. CPP11 is now properly incorporated into Herd, in
what I hope is a pleasingly modular way. Most significant changes
are as follows:

- Each architecture defines some special sets that will be available
  in every model, e.g. CPP11 defines "rmw" as the set of RMW events.

- CPP11 no longer uses the Barrier and Commit actions. Instead of
  Barrier, it defines its own Fence action. (I found that trying to
  use the machinery for hardware barriers in the CPP11 model was
  quite cumbersome.) As a consequence, CPP11 fences no longer feature
  in the list of all barriers.

- I split Generic into an Interpreter and two "model checkers", which
  both use the Interpreter. The MachModelChecker is for machine
  memory models, and the CPP11ModelChecker is for CPP11. The latter
  includes the "lo" (lock-order) relation, which is generated by the
  new "apply_process_lo" function in MemUtils.

- I made the event monad slightly more generic. The mk_singleton_es
  function now supersedes the previous create_barrier, commit, and
  write_loc functions. You just pass it an action, and it makes you
  a singleton event structure. As an unfortunate consequence, there
  is now a bit more repetition between ARMSem, PPCSem and X86Sem,
  which I'm not really sure how to remove.

- The value type in the Interpreter is extended to include sets, as
  well as relations and closures. As a result, I added "set" and
  "rln" as new keywords.

- I added "provides" and "requires" as new keywords. One uses
  "requires" clauses to create undefinedness in models -- this is
  relevant for language-level memory models. The implementation
  doesn't do anything yet -- I still need to move this over from
  the cpp+gpu branch.
Minor
Merge commit 'dcae1a5603bdba3243ba88d210803f6a686e835b' into cpp