Handle timeout, webexception

Trying a continuation of pr #197

- [x] Catch exceptions
- [x] Blank RELEASES should not result in explosions
- [x] Log timeout/webexception/etc as they occur
- [x] Tests
- [x] Make TimeoutException test not take 15 seconds because of `Squirrel.Core.Http.makeRequest`

<del>**Note about logging** -- BitsManager doesn't take the application name, so how should logging occur? Thinking of moving `Catch`es to UpdateManager, but this would mean all users of DownloadUrl would need to handle catching.</del>

Tested in the sample project; the update window will stay on the progress bar instead of crashing

This PR would allow this example [from the wiki](https://github.com/squirrel/Squirrel.Windows/wiki/How-do-updates-work%3F):

``` csharp

var updateManager = new UpdateManager(@"C:\Users\brendanforster\Desktop\TestApp", 
                                      "TestApp", 
                                      FrameworkVersion.Net40);

var updateInfo = await updateManager.CheckForUpdate();

if (updateInfo == null) {
    Console.WriteLine("No updates found");
} else if (!updateInfo.ReleasesToApply.Any()) {
    Console.WriteLine("You're up to date!"); 
} else {
    var latest = updateInfo.ReleasesToApply.MaxBy(x => x.Version).First();
    Console.WriteLine("You can update to {0}", latest.Version);
}
```

To not break if the url is broken or there's a timeout exception, as `updateInfo` would now return null, instead of an exception being thrown inside of `determineUpdateInfo`.

If merged this would close #172, close #197