Fixes reachability

The reachability code is not working due to 2 issue:

- the startMonitoring will call stopMonitoring which will release the networkReachability, which then cause the monitoring not start at all. (#1304)
- the networkReachabilityStatus is UNKNOWN after starting monitoring, it will only change when the reachability change. it seems simpler to just always check for reachability status when start monitoring?