Change User and RemoteInstance objects to be asynchronously constructed

User and RemoteInstance objects had been using storage.load within their constructors.  Because storage.load is an async function, this resulted in User objects in the network.roster and RemoteInstance objects in the user.instances_ array that were not fully ready for use.

I've changed both User and RemoteInstance objects to have a static .create method, which acts as a factory, and returns Promises that get fulfilled when the User/RemoteInstance objects are fully ready for use.  This way we will no longer have any partially constructed Users in network.roster or RemoteInstances in user.instances_, and don't need public variables like isReadFromStorage.

This also fixes https://github.com/uProxy/uproxy/issues/721

Tested in Chrome, Firefox (UI still loads), updated "grunt test" to reflect new async behavior
For FreedomNetworks (all non-manual networks) we expect to get onClientState messages or onMessage events that have clientIds and status - then we update that map.

With ManualNetworks, we haven't really thought through how ClientState or RemoteInstance will be handled, and none of this code is actually in use expect for in unit tests.  My change is just the quickest thing to get unit tests to pass, we will revisit all of this when we actually have manual networks (copy+paste) working with a saved roster (probably copy+paste v2)