Implemented Logger.Swallow and Logger.SwallowAsync methods

Instead of repeatedly typing try/catch handlers like this:

```C#
try
{
    MightFail();
}
catch (Exception e)
{
    Logger.Error(e);
}
```

You can now write a single line:

```C#
Logger.Swallow(() => MightFail());
```

Several variants are provided:
```C#
Logger.Swallow(() => MightFail());
result = Logger.Swallow(() => UnreliableFunc(), fallbackResult);
result = Logger.Swallow(() => UnreliableFunc()); // returns default(T) in case of exception
await Logger.SwallowAsync(async () => await MightFailAsync());
result = await Logger.SwallowAsync(async () => await UnreliableFuncAsync(), fallback);
result = await Logger.SwallowAsync(async () => await UnreliableFuncAsync());
```