Add FormTagHelper.

- Added the FormTagHelper.
- Utilized the IHtmlGenerator to share base functionality with the HTMLHelper counterparts.

#1246
nit: see this a few times in this PR and it's not the way we usually set mocks up.  normal approach would be to chain calls, keeping everything together:
``` c#
  urlHelper
    .Setup(mock => mock.Action(
      It.IsAny<string>(), 
      It.IsAny<string>(), 
      It.IsAny<object>(),
      It.IsAny<string>(),
      It.IsAny<string>(),
      It.IsAny<string>())
    .Returns("home/index");
```