Add NetworkService to make REST calls

This allows REST calls to survive configuration changes by communicating over an event bus.

Additional changes include switching to gson and adding and using the dagger injection library in a bunch of places.

@kalgynirae Please be as critical as possible. I know it's a huge diff, but it's an architecturally important one too.