move Task resolver code to a ResolveStrategy

The suggested refactoring from #146. Preserved all the functionality. There's one difference that I think needs some attention - using `TryResolveDummyValue` to create the `Task.Result` instead of `TryResolveDummyValueWithAllAvailableStrategies`. It mirrors the way that the constructor argument values are created in `ResolveByInstantiatingClassUsingDummyValuesAsConstructorArgumentsStrategy`.

Oh, and now that I type this, what about doing the same for default(object) in the `Task` (no of T) case?