Introduce non-versioned Data

These are data types where there is only one state. The previous
value for that state cannot be viewed and the value of the
data cannot be viewed after it has been modified.

Non-versioned data seems to go against the core philosophy of
Forge.Entities, but it is extremely useful for certain data types
which are fundamentally not versioned, ie, data that will only be
used in one system. It better captures the idea that the data type
cannot be backwards queried instead of having the client code
silently express that idea; nonversioned data makes that explicit.
Cleanup
Move code into PerformanceInformation
Data.NonVersioned now implements Duplicate()
Add some tests for NonVersioned data
Throw if Previous(accessor) is not versioned data
Contains=true and Current=value for removed data

This fixes a problematic scenario with non-versioned data. If you
remove the non-versioned data, in the next update when you're
trying to cleanup Current(accessor) will throw a NoSuchData
exception and Previous(accessor) will throw a
PreviousRequiresVersionedData exception. This change allows for
Current to require the last known value for the data.
Rename exception
Creating a player now requires the player name