Splits out Weapon and WeaponSkill Concepts

Code complies, tests pass, and manual testing looked OK.
Still have some cleanup to do, and UI needs to be rethought.
Starts replacing Contract with ExceptionUtils

CheckArgumentNotNull introduced.