picker.toggle, closes #436

Addressing #436, this fix originally focused on mimicking the functionality of a normal dropdown, but some changes have resulted in different behaviour in other areas of the picker.

As far as I know, this could break isInput types, or !picker.component types (Although I would guess it doesn't)

**Possibly breaking changes:**
* Calling `.show()` ***does not*** fire the `dp.show` event if the picker is *open*
* Calling `.hide()` ***does not*** fire the `dp.hide` event if the picker is *not open*
* Calling `.show()` ***does not*** hide the picker if the picker is *open*