Add class for our specific GPS-module (Ublox)
Modify UbloxGPSSensorController class

- Fixes a problem with flow of control in getCurrentData()
- Now takes 3 datakeys as args.
Improve UbloxGPSSensorController, add test class.

- parseNmeaCoordinateToDecimal method implemented.
- Test class added, tests for parseNmeaCoordinateToDecimal method added.
- readSensorValues method added to do some of the work that
  getCurrentData was previously doing.
- Serial port now open only in serialReadLine method.
- close method removed.
Updates GPS sensor controller so it catches native linker errors

Pi4j wraps some native libraries which help to interface with the
hardware on the Pi. If we run the pi4j libraries on machines other than
the Pi, we get native linker errors where these native libraries aren't
resolved. In the case where we aren't on the Pi, we can't really
communicate with the GPS module anyway, so for now we're catching these
exceptions and returning an empty data object. This allows the app to
keep running without falling over in a heap.
Modify UbloxGPSSensorController class.

- Replace serialReadLine() method with getNmeaSentence(GPXXX) method.
- Add readSensorValues() method.
- Add fields for time, date and speed.
Merge branch 'features/gps-module' of https://github.com/DanGorst/project-latex into features/gps-module

Conflicts:
	project.latex.balloon/src/project/latex/balloon/sensor/UbloxGPSSensorController.java

Merge conflict resolved
Refactor UbloxGPSSensorController into a few smaller classes

- New UbloxGPSSensor class reads serial port and builds NMEA sentences.
- New NMEASentence Parser is an abstract class which parses NMEA
  sentences into data which we can use.
- UbloxGPSSensorController now just handles and returns the necessary
  sensor data.
- If for some reason the sensor cannot be read,
  UbloxGPSSensorController.getCurrentData() will now throw
  SensorReadFailedException.
Refactor UbloxGPSSensorController

- The module now interfaces SeonsorController, GPSSensorController and
AltimeterController have been deleted.
- The module now returns data corresponding to the keys passed to it as
  arguments.
Refactor UbloxGPSSensor

- Now UbloxGPSSensor is renamed to GPSSensor as it represents any GPS
  sensor, it now takes supported NMEA sentence types as args.
- UbloxGPSSensorController renamed to GPSSensorController as it
  represents a controller for any GPS module.
Refactor NMEASentenceParser

- The main change is that parse(String nmeaSentence) now returns a
  HashMap<String,String> instead of HashMap<String,Object>
Add tests for NMEASentenceParser
Add unit tests

- Adds unit tests for GPSSensorController and NMEASentenceParser
  classes.
Add tests for GPSSensor
Tweak GPSSensor tests
Tweak GPSSensor tests
Tweak GPSSensor tests
Tweak GPSSensor tests
Tweak GPSSensor tests
Add GPSSensor tests
Add GPSSensor tests