Services code review 1

I have been working on implementing services and thought it would be nice to get some feedback. This is still a work in progress, so this should not be merged.

Check out the new tests in Tests/MsgGen.hs, and Tests/ServiceClientTests/ServiceClientTest.hs (instructions in comments). Right now it can generate Haskell types for service messages (tested by MsgGen), and call ROS services without any error handling (tested by ServiceClientTest).

Service message generation is not yet integrated into the executable.

Service Haskell types are just like message types except that they are also instances of SrvInfo. The generated Haskell message type files should be the same as before except they might have an extra newline at the end.

Except for MsgGen, changes to existing code are minimal: there is some code extraction and changes suggested by hlint.
Maybe we should make a record type for the arguments to `generateMsgTypeExtraImport` as they're getting numerous, and denoting meaning with the function name doesn't scale too well. We could have a data type, `PkgMsgs` with fields `extraImport`, `pkgPath`, and `pkgMsgs`.