Use templating in Units.NET.

* Copied UnitClasses.tt from UnitsNet and modified namespaces.
* Use IUnitAttribute and UnitAttribute from Units.NET assembly.
* Move unit enums into Units folder, update namespace.
Support external assemblies in UnitSystem.

* Reuse TemplateUtils.
* Remove commented code in UnitClasses.tt
* Update UnitClassInfo to hold unit enum type, replacing UnitEnumTypeName property.
Add nuget T4MultiFile.
Add tests unit classes in UnitsNet.ThirdParty.

* Add Tests/UnitsNet.ThirdParty.Tests.csproj
* Add nuget T4MultiFile, remove sample files.
* Add missing Undefined enumeration in FooUnit.
* Merge UnitConverter.tt into UnitTestClass.tt, copied from UnitsNet.Tests.net35 project.
Fix UnitSystem to pass tests.

* NotImplementedException was thrown for various cultures.
* Add more info to exception.
* Add and reuse TemplateUtils.GetUnitEnumTypes()
Add methods to unit classes.

* static string GetAbbreviation()
* multiple ToString() variations with culture, format etc.
Add unit abbreviations to foo and bar units.
Fix ToString() in generated unit classes.

Base unit was returned regardless of specified unit.
Improve testability of UnitSystem

* Add public ctor to create new instance.
* Rename Create() to GetCached()
* Add static AddAssembly(), RemoveAssembly() and Assemblies for adding default external assemblies. Needed for ToString() of unit classes to work, as they don't have an instance available and must call GetCached().
Add russian abbreviations to foo/bar units.
Add UnitSystemTests in third party test project.

* Test localization of foo/bar units.
* Test all units have defined abbreviations.
Add UnitClassTests_Force

Testing of UnitSystem via unit classes. Testing only one unit class, since they all share the same template.

* Test variations of ToString() and GetAbbreviation() with different cultures, units and arguments.
Merge branch 'feature/PrepareThirdParty' into develop