Copy search logic into separate classes

No storage for now, so the old module is still used
Separate AsyncResult interaction from results method
Refactor common patching approach into helper
Store parsed results in the database