Started working on JSON serialization.

- Created GammaWorldCharacter.Serialization and added Newtonsoft.Json.
- Started defining a JSON schema.
Debugging JSON schema. Committing as a backup.
Combined serializer into main library.

- Removed GammaWorldCharacter.Serializer and added the contents back into
  GammaWorldCharacter.
- Started work on schema.
- Added TestSerializer.
Still working through schema and serialization.
Got serializing a single level 1 character with gear.

- Character.PlayerName can now be null.
- Changed Character constructor to take an IEnumerable<int> rather than
  int[] for ability scores.
- Character now implements IEquatable<Character> and overrides Equals and
  GetHashCode. Equality is based on the scores, levels, origins, trained
  skill and, of course, name.
- Added Character.ToString() for easier debugging.
- Made Armor abstract.
- Deleted ArmorWeightType.
- Origin now implements IEquatable<Origin> and overrides Equals and
  GetHashCode. Equality is based on name, ability score and power source
  (not critical hit effect as it is too time consuming to implement).
- Added new XXXJsonData classes for other weapon and armor types used for
  serializtion, including ArmorWeight.
- Changed CharacterJsonData.EquippedGear from a Dictionary<string,
  ItemJsonData> to a Dictionary<Slot, ItemJsonData>.
- Changed many properties that were previously strings to enums and now
  use the StringEnumConverter.
- Changed origins to be stored as types using a custom TypeNameConverter.
  Although convenient, this is actually a security risk so will need to
  revisit this in the future.
- Added ToItem and FromItem to ItemJson data and subclasses for Gear
  serialization.
- Gave up on creating a hand crafted JSON Schema.  Polymorphism is too
  hard to represent, possibly due to the NetwonSoft.Json class being used.

Future work:
- Support serializing levels.
- Fix potential security flaws such as serializing as types.
- Remove now unused schema.
Got serialization working for all level 1 test characters.

- Allowed MainHand and OffHand items to be null.
- Removed now unused schema, checks and tests.
Working on level serialization.

- Levels are not deserializing correctly. Need to fix.
- Changed Level03.OriginChoice to Level03.UtilityPowerOrigin as it is a
  more descriptive name.
More serialization work. Still failing.

- Fixed but in Item.Equals where derived types were considered equal.
- Removed TypeNameConverter in favor of the more secure OriginConverter.
- Changed CharacterJsonData to use Origins rather than type names for
  origin serialization.
- Made LevelXXJsonData properties required.
Converting from ItemJsonData to ItemConverter.

- Deserializing has not been converted.
- Renamed ItemJsonDataConverter to ItemConverter and changed types in
  CharacterJsonData appropriately.

Future work:

- Remove ItemJsonData and subclasses.
- Fix enum serialization (quotes are being added unnecessarily).
- Remove slot "None" for items.
More serialization work. Converter selection issues.
Got character serialization working.

- Added support for level serialization (using LevelConverter).
- Fixed issues with gear serialization (using ItemConverter).
- Added equality and ToString() implementations to Level and subclasses.
- Removed LevelJsonData and subclasses.
- Removed ItemJsonData and subclasses.
- Omits the "slot" property on items when it is Slot.None.
Readded schema for future integration.