[#253] refactored how we managed the `orientationchange` event

Also exposed one new `device.orientation` property and one new
`ON_ORIENTATION_CHANGE" event channel (minpubsub)