Vagrant development environment configuration.

Starting the update to support ROS Hydro, and a general sprucing up of
the package as a whole.
Increase vagrant VM memory.

Cabal and GHC use quite a lot of memory.
More VM setup.

Install bash-completion for cabal-install.

Add cabal directories to PATH.
Switch away from deprecated attoparsec module.
Simpler use of Typeable for Topics.

With GHC 7.6.3, we can't derive a Typeable instance for Topic, but going
forward hand-written Typeable instances are disallowed. Instead, we now
dynamically type just the payload of a 'Topic IO' as this is the only
thing we need to abstract over to deal with publishing.
Loosened vector constraint on PubSub example.
Initial support for catkin build dependencies.

We need to find package dependencies to generate message
definitions. These are specified somewhat differently in catkin
package.xml files than they were in the previous build system's
manifest.xml files.
We need to link with the right version of Cabal.

We must ensure that roshask's dependency on Cabal is consistent with the
version available when the cabal-install program runs our custom
Setup.hs.

This is fragile and probably not yet right.
Support for working in Cabal sandboxes.

This means that generate message definition packages are installed in
the same sandbox as roshask itself if it is installed in a sandbox.
Updated TODO notes.
Add /opt/ros/hydro/bin to PATH in VM.
Fix and extend sandbox support.

Fixed bug in sandbox directory detection.

Unregistering roshask-generated packages now works in sandboxes.
Length fields are little-endian.

This change should have no effect on x86.
Slight improvement to pulling bytes from a Handle.
Fixed bug with Bool arrays.

While the RosBinary instance handles serialization of Haskell Bool
values to and from a single byte, the Storable instance for Bool uses
four bytes. A problem then occurs when we want to use a Storable Vector
to hold boolean values. If we receive four bytes for an array of boolean
values from a peer, that is four distinct booleans, but the Storable
instance for Bool wants the Vector of length four to use 16 bytes.

Instead, we simply map the Ros bool type to a Haskell Word8 for now.

Fixes #15
Bumped haxr dependency to address roscpp compat.

Some communication with roscpp nodes was causing trouble for roshask due
to an implicit string type annotation in XML-RPC. According to the spec,
an XML-RPC value such as "<value></value>" should be interpreted as an
empty string. haxr was instead looking for
"<value><string></string></value>" for such values.

I patched haxr to accept unwrapped text as a string value.

Fixes #14
Finished roscpp compatibility fix.
Handle empty message files.

Consume leading spaces and comments before trying to parse fields and
constants. This results in a message type isomorphic to the unit type.

Closes #13
Fix Bool serialization.

ROS specifies that we serialize booleans as a single byte, while there
is an instance of Haskell's 'Storable' class for 'Bool' that uses four
bytes for each boolean value. We handle individual boolean values with
the 'RosBinary' instance for the Haskell 'Bool' type (i.e. one byte for
each boolean). We must handle arrays of booleans specially as the
serialized form must still be one byte per value.

This approach uses Bool on the Haskell side, while serializing to and
from ROS peers using one-byte-per-boolean for top-level boolean fields,
variable-length arrays of boolean values, and fixed-length arrays of
boolean values.

Fixes #15
Merge branch 'master' of https://github.com/acowley/roshask