ValueType cleanups

- Add Scaladoc for the most important types and traits. Some specific
  types (like vt.Int16) are left undocumented but they should be
  sufficiently described by their name and the Scaladoc of the traits
  they implement

- Make CellValueType extend ValueType. This was intended to be a
  specialization of ValueType but the extends was left off

- Add PointerType for all types that have a pointer as their native
  representation
TargetPlatform improvements

- Add bytesForType that returns the number of bytes a type will consume.
  This is trivial for our types once we know the pointer size

- Add usesNaturalAlignment which is currently true for all platforms.
  This is intended to be a hint that it's safe to run the
  yet-to-be-implemented record repacker

- Add platformFeatures which will return a list of platform-specific
  feature identifiers once (cond-expand) etc are implemented

- Switch sizeType to UInt32 on 32bit architectures. The underlying type
  is actually unsigned on 64bit but our backend can't represent unsigned
  64bit values.
Add PackRecordInline

This tries to re-arrange record fields to fit inside the inline data
fields in an allocation cell. Whenever possible the existing field order
is preserved.