Improved error handling

Catch errors while trying to get new Browscap source data;
Detect HTTP errors (e.g. when the rate limit has been exceeded) and
throw exceptions with more detailed error messages