Refactor FullTextSearch plugin into a reusable widget

This is an initial cut at moving the FullTextSearch plugin code into a separate widget.  The changes are untested as yet as I haven't got a working example to test with.  Comments and discussions welcome.