Refactored and added lots of custom options & methods

This is a pretty big PR, possibly could have broken it down a bit more but decided just to go ahead with the full shabang!

Basically it refactors it to be more state-aware and add's the ability to call methods like `update` and `destroy` to destroy the plugin (replacing the function callback to decide if the plugin is enabled or not). For that reason it's not backwards compatible so would likely need a version bump.

It also adds the ability to not automatically select the first option on initialization and doesn't attempt to continously update whilst window is being resized, it'll do it every 500ms.

As I said, pretty big PR not even sure if this thing is maintained anymore but thought I'd send it your way anyway to see what you think. Docs have been updated too