Reworking of singleton types.
- Added syntax.singleton to enrich literal and stable values with
  singleton typed operations.
- Added WitnessWith type supporting narrowing of a literal/stable
  value to a singleton type and simultaneously summon a type class
  instance for that singleton type.
- Witness/WitnessAux refactored to follow the current Foo/Foo.Aux
  pattern.
Added at Nat-indexing to HList as an equivalent to apply in circumstances when the record apply is in scope.
Added at Nat-indexing to tuples as an equivalent to apply.
Reworking of records.
- Split off record syntax and operations to syntax.record and ops.record
  respectively.
- Records are now HLists of values tagged with the singleton types of
  their keys.
- Added updateWith record operation (thanks to @jonifreeman) and used
  WitnessWith to get the function type inference to go smoothly.