can.route.map demo page and bug fixes

* adding demo page for can.route.map
* fixing bug in define where type wouldn't enforce if you used passed an object into attr
* changing can/route so during every state change, it doesn't blow away the other properties of can.route.data, which is important if you create your own appState object that has more non-serializable properties