Fix type regexps to include 0
Remove ROSMessage and have wrapper use ROSTypeMap
Add support for flattening returned messages

A message can be "flattened" if all its members are fixed size primitive
types.  Instead of returning a struct for a flattenable field,
decode_rosmsg() returns an M-by-N matrix of doubles where M is
the number of fields in the message and N is the length of the array of
the message type.  This makes reading certain types (e.g.,
geometry_msgs/Vector3[]) substantially faster and significantly reduces
memory usage.
Return arrays of primitives as columns instead of rows
Switch to enumerated type for parsing builtins

This change eliminates the need to make string comparisons which speeds up
reading certain message types, particularly those that are flattenable.
Replace template deserializers with regular functions