Fix for #1052 - ViewComponents should support fully qualified names

This change adds the concept of a full-name to viewcomponents. View
components can be invoked using either the short name or long name. If the
provided string contains a '.' character, then it will be compared against
full names, otherwise it will be matched against short names only.

The short name is used for view lookups.

If the name is explicitly set via ViewComponent attribute, then the full
name is the name provided. The short name is the portion of the name after
the last '.'. If there are no dots, then the short name and full name are
the same.

If the name is not set explicitly, then it is inferred from the Type and
namespace name. The short name is the Type name, minus the 'ViewComponent'
suffix (if present). The full name is the namespace of the defining class,
plus the short name.
Scenario: Area writers could come up view component type names(but in their own area namespaces) which could be the same with other view components in the application/other areas...so can we have a  scenario where the names of the types are the same but in different namespaces...now if I am an area writer, to be safe from collision, I would provide an explicit name when invoking a view component within the views of my area...