For some reason Umbraco has started lowercasing the names of uploaded
files. This fixes the problem by ignoring case when looking for the
uploaded files.
Added a TypeConverter for both `ArchetypeModel` and `ArchetypeFieldsetModel`, so that they can be converted to their `IPublishedContent` equivalent.
Example usage would be, when you would typically do this...
```csharp
var items = Model.Content.GetPropertyValue<ArchetypeModel>myArchetypeAlias");
```
You can now do this...
```csharp
var items = Model.Content.GetPropertyValue<IEnumerable<IPublishedContent>>("myArchetypeAlias");
```
I know it seems more verbose, but the idea is that this could be hot-swappable with other property-editors, such as Nested Content. The frontend/code would deal purely with `IPublishedContent` objects.
---
Also included unit-tests that run via Umbraco Core's `TryConvertTo` extension method, (which is what `Content.GetPropertyValue<T>` uses internally in Umbraco).
There's a small caveat with the TypeConverter for `ArchetypeFieldsetModel`, I had to explicitly reject `typeof(string)`, otherwise the JSON deserializer fails (in `ArchetypeHelper.DeserializeJsonToArchetype`).
All other unit-tests still pass.
For the `IPublishedContent` implementation, added support for `GetIndex()`, so that extension methods, such as `IsFirst()`, `IsLast()`, etc will work as expected.
Unfortunately we wont be able to support the `Siblings()`, (or `FollowingSibling`, `PrecedingSibling`) extension methods, as these perform an internal query to the node's parent's children - which in the context of Archetype data is not possible access.
Added unit-tests to support this enhancement.