NPC Improvements and fixes

Improved NPC handling by adding NPCBase class. This also allowed me to
use Data.WriteAllProperties and Data.ReadAllProperties for sending and
receiving NPC data. Also fixed Tileset ID what was declared as Integer
but it was loading as String.