UserAuthentication(String, String) Constructor
Creates a new instance of UserAuthentication and attempts to authenticate
the user (identified by their email) using their password. This flow also assumes
logging on with a new Device and will save the DeviceKey and DeviceGroupKey
to the private variables. The caller is responsible for verifying the device is legit.
After the contructor returns, call InitializeAsync() to complete the constructor / initialziation process.