It really should be .NET45 - and less async/await

- make the core projects .NET45
- drop Microsoft.Bcl.*
- strip out some unnecessary async/await
- fixed up some differences between Task<IReadOnlyCollection> and Task<IReadOnlyList>