[Fixes #393] Update ViewComponent result apis to be consistent with Controller

1. Updated ViewComponent to expose similar properties to the existing ones in Controller where
appropiate. We've left out Resolver for being a bad pattern (just inject the dependency on the constructor
or use Context.RequestServices to access it if needed) and Response as although available through the Context property, it shouldn't be used/modified in a ViewComponent.

2. Updated ViewViewComponentResult to follow a similar pattern as ViewResult where the constructor is
parameterless and elements like ViewEngine are resolved during execution if the user does not set the
associated property on the object.

3. Updated ExecuteAsync in JsonViewComponentResult to remove the unnecessary pragma and async keyword from the signature and to use Task.FromResult(true) instead.

4. Cleaned up ViewViewComponentResult tests.
It's actually the opposite. This change removes the constructor (which is not present in view result) and enables users to use this ViewComponentResult when writing POCO ViewComponents.I spoke with @pranavkm about this. With this, you can just write

```C#
public class MyViewComponent
{
    public IViewComponentResult Execute(ViewComponentContext context)
   {
       ...
      return new ViewViewComponentResult();
   }
}
```

And we'll resolve anything for you, so your ViewComponent does not need to know about IViewEngine, etc.