More efficient json unmarshalling, fail on missing forecast api key
Smaller cleanups, move structs out of functions