Avoid NullReferenceException with async methods

When using async methods and loose Mock Behavior, calls to Task methods
give NullReferenceException, since default(Task) is null. Calls to
Task.Wait() and Task<T>.Result should follow the loose behavior: do
nothing and return the default value for T, respectively.

Related to #64.
Make code .NET 3.5 compatible

Use compile directives to ensure smooth NuGet package generation.

'IReturnsExtensions' was using 'System.Threading.Tasks' namespace, so
compile directives were also added to it.
Merge pull request #66 from alextercete/master

Avoid NullReferenceException with async methods