Flatten custom select

Move some methods out into the widget prototype. One method is kind of hard to move because it makes use of the /this/ parameter, which would become the widget itself were it to be moved out.

There are also some methods attached with .one() for which the widget factory provides no this._one() equivalent.