Updated Item related functionality & mappers
Summary
Items were always seen as a base class to extend with an identification mechanism by the consuming app, but as time went on it became apparent that its probably easier to just have it have a Guid by default, but without messing up the existing interface we have added a new IIsUnique
interface which allows anything to be given a Guid UniqueId {get;}
.
Also as part of this Equipment has been changed slightly so slots are no longer tied to a specific item type but are now more open so you can implement a predicate indicating if an item type can be equipped.
We have also added IMapper<Tin, Tout>
at the core layer to support higher level changes to streamline common persistence scenarios, which historically were left to the consumer to implement, but there is a large amount of overlap so the higher level libs are implementing that.