Refactor|libcore: Convenient native access to a Record

Added RecordAccessor as a utility that provides various get*()
methods to query values from a Record. RecordAccess is now used in
Config and Record itself.

Also added an Value::asInt() conversion method with automatic
rounding to the nearest integer, and ArrayValue indexing with native
integers as indices.
Refactor|libgui: Use RecordAccessor's get*() methods
libcore|NumberValue: Added a semantic hint for hexadecimal values
Cleanup
Fixed|libcore|Scripting: RecordValue duplication behavior

RecordValue is now duplicated like any other value: a true duplicate
copy is constructed with the exact same characteristics.

Record no longer needs to make a special case when copying subrecords.

NameExpression now handles RecordValues separately and specifically
makes unowned duplicates out of them, because during expression
evaluation, records should always be handled via reference.
Cleanup
Refactor|libdoomsday|DED: Model definition handling in separate source file

The model definition accessor utility is now located in its own
source file. Various utility methods were added (e.g., testing whether
the definition is valid).

Also fixed a problem in the DED parser where model definition records
were copied with all metadata intact, losing the original ordinals.
Refactor|Resources: Use the new model definition accessor

libdoomsday's defn::Model is now used to access model definition data
stored in Record instances.