elm logger

moved this from the Logging repo (aspnet/Logging#38), removed the Mvc dependency from the sample, and fixed scoping
Don't do this but I wonder if C# 6 magic would look like:

```
formatter?.Invoke(state, exception) ?? state.ToString()
```