Add ability to resolve all TagHelperDescriptors with one method call - DTH Communication Part 2

*This PR consists of several different aspects entailed by #214. It essentially covers bullet points 4-5.*

Add ability to resolve all `TagHelperDescriptor`s with one method call.
- Modified the `AddOrRemoveTagHelperSpanVisitor` to no longer manage `TagHelperDescriptor`s found in the system. Instead it now manages `TagHelperDirectiveDescriptor`s which are then used to resolve `TagHelperDescriptor`s.
- Changed the signature of `ITagHelperDescriptorResolver` to take in a `TagHelperResolutionContext` which will allow us to pass more information without breaking tooling.
- `TagHelperDescriptorResolver` now resolves all `TagHelperDescriptor`s at once and manages descriptors found in the system based on values on the provided `TagHelperDirectiveDescriptor`s.

Modify tests to use new `ITagHelperDescriptorResolver` signature.
- Updated all of the tests to use the new `ITagHelperDescriptorResolver` signature so instead of passing strings they now construct `TagHelperDescriptorResolutionContext`s.
- Removed several tests from the `AddOrRemoveTagHelperSpanVisitorTest`s. This was due to the change in responsibility of managing the found `TagHelperDescriptor`s; the `TagHelperDescriptorResolver` now does this.
- Added several new tests to verify the `TagHelperDescriptorResolver` manages resolved `TagHelperDescriptor`s based on the given `TagHelperDirectiveDescriptor`s.

#214

Part 1 PR: #218

/cc @yishaigalatzer @dougbu @pranavkm 
Absolutely agree that as of right now it's not a very valid extensibility point; was simply using it as an example as to why the flexibility has value where as adding the restriction does not.

I'd really like to avoid a third test project purely for a single `TagHelper` class when `string` here is being used just as it is in the `TagHelperDescriptorFactory` tests. It'd add more confusion having a third project for a single type (to new devs) than it would be here reusing a pattern we use elsewhere in the same project.

Possible middle ground: Add a comment?