[DONT MERGE YET] Features - 2g data GET request

## `requestGET(webAddress, callback)`

This PR introduces data support to the GRPS module. It adds a method, `#requestGET(webAddress, callback)`, that will perform a simple GET request to a given web address. The callback will return with any errors if the GET request fails. 

For example: 

```
gprs.requestGET('http://myapi.com?id=12345&location=xyz', function requestGETCallback(err, data) {
    if(err) {
        console.log('location was not saved');
        return;
    }
    console.log('location was saved to API');
});
```

## `new CommandChain()`

This PR also introduces a helper method for generating command chains. Previously you needed to create three separate arrays, for example:  

```
var commands = ['AT+INIT', 'AT+CMD'];
var patiences = [2000, 5000];
var replies = [ ['AT+INIT' , 'OK'], ['AT+CMD' , 'OK'] ];
``` 

This was cumbersome in that it required updating three arrays to add or remove commands. Now you can keep the command, patience, and reply together in one object. For example: 

```
var commands = new CommandChain([{
    message: 'AT+INIT, 
    patience: 2000,
    expected: ['AT+INIT' , 'OK']
}, {
    message: 'AT+CMD',
    patience: 5000,
    expected: ['AT+CMD' , 'OK']
}]);
```

You can then get arrays from the command chain using the following methods: 

```
commands.getMessages() // array of all messages
commands.getPatiences() // array of all patiences
commands.getExpected() // array of all expectations
```