Dev/ar 7 upstream reconciliation - serialization bug fixes

Hi Kevin,

OK this should build. I started with the upstream/develop branch, and when that was building, cloned it into dev/ar-7, and then merged dev/ar-6 in. I did run into the delinter issue, and fixed it.

This branch does now contain the ```{"fieldsets": []}``` fix (ar-5 and ar-6). 

But looking over the code, I also realized the the AR-1 branch was quite outdated in terms of the tests, and some optimizations relating the the serializer entry point (ar-4).

It proved impossible to cherry-pick, hence this branch includes all cumulative changes. But other than the merge conflict, which is now fixed, there was only one small change in your tests:
```csharp
--- a/app/Umbraco/Archetype.Tests/Models/FieldsetTests.cs
+++ b/app/Umbraco/Archetype.Tests/Models/FieldsetTests.cs
@@ -6,7 +6,7 @@ using System.Text;
 using System.Threading.Tasks;
 using Archetype.PropertyConverters;
 using NUnit.Framework;
-using Archetype.Tests.Serialization;
+using Archetype.Tests.Serialization.UseCases;
```

All other changes are self contained in the Serialization code and tests.

Hopefully this will now work.