WIP: Added TagHelperContext.UniqueId

- The ID is created at view compilation time and is unique per TagHelperExecutionContext and thus per HTML element in the source for which Tag Helpers will run
- #241
- Still need to update tests, may need to add some plugability to do it well, e.g. ITagHelperUniqueIdGenerator
1. `{ get; private set; }`
1. Add ctor arg to populate this.
1. Modify `TagHelperScopeManager.Begin` to also take in the `UniqueId` (which then passes it to the `TagHelperExecutionContext`).
1. Modify codegen to pass in uniqueId to `TagHelperScopeManager.Begin`.

This way we ensure that the `UniqueId` is 100% tied to the `TagHelperExecutionContext` (can't be set) and its directly associated with the scope the execution context was contrived from. 

I'll leave comments in other places in the PR to guide changes.