Allow passing a per-line callback to readResponse

This allows processing a lot of response data without having to allocate
a huge buffer to hold it all, instead only needing a single line worth
of data.
Add example of scanning
Remove duplicate digitalWrites to the SS pin

The transferSpi function already takes care of toggling the SS pin, so
don't do it in readRaw as well.
Add functions to handle settings profiles
Fix parseNumber for hexadecimal numbers
Don't use GS_ constants where GS_ASYNC are needed

This prevented the processing of some async responses to be messed up or
mixed, though all of them were unimplemented so far.
Improve debug logging of async responses
Let GSCore::processIncoming return a bool

Letting it return false when -1 is passed allows simplifying calling
code a bit.
Make sure that connection info is always up-to-date

Before returning the current connection info, see if there are any
asynchronous responses that await processing, since those could affect
the returned connection state.
Keep track of current association status
Add support for the Network Connection Manager

This is a part of the gainspan module that can automatically try and
retry to associate and connect.
Rename GSCore::SPI_DISABLED to INVALID_PIN

Also make it public, this will allow using it for other purposes too.
Rename GSCore::ss to ss_pin
Support data ready pin and improve polling without it

The Gainspan module supports a data ready to indicate wether there is
SPI data waiting. The library now supports checking this pin to quickly
determine if there is data waiting or not.

Additionally, this commit improves the polling behaviour previously
used. The gainspan module does something weird: In idle mode it fills up
its SPI buffer with idle bytes, which don't get removed when data
becomes available. This means we'll have to read out all of those bytes
before we get at the data and that we'll aslo have to read all of them
(plus one) to see if there was any data in the first place...