values: Basic utils for gdb.Values

Implementation of a couple of helper functions for working with GDB values:

 - `is_pointer`
   Check if value represents the actual value or a pointer-to-value.
 - `address_of`
   Get the memory location of the specified value.
 - `value_of`
   Return the actual value of the specified value.  If the specified value is a
   pointer-to-value it is dereferenced.
 - `same_instance`
   Check if lhs and rhs are both representing the same value instance.
 - `array_len`
   The number of elements stored in the specified array.
declarative: Initial support for GDB value declaration

Beginning of a metaclass for providing a declarative description language for
GDB value representations.