Improve the way we connect to network

Only connect if needed, and if we just want a connection then only attempt cell data if other means have failed.