Added BatteryLowReceiver, BatteryChangeReceiver and Boot receiver also along with bug fixes at other places

Now isLocationReady waits for selected amount of period and not forever
to be woken up. Also, getLastKnownLocation looks at other providers as
well in case location returned is null with best provider.