Search API cleanup

Introduce search_api_interface and search_api in order define the full functionality and capabilities of a Search API.  Simplify the extending classes in order to improve the code reusability and readability

Signed-off-by: Shitiz Garg <mail@dragooon.net>
Require Search APIs to be instance of search_api_interface

Signed-off-by: Shitiz Garg <mail@dragooon.net>
Fix the phpDoc for moveTopics

Signed-off-by: Shitiz Garg <mail@dragooon.net>
findSearchAPI returns an instance of search_api_interface

Signed-off-by: Shitiz Garg <mail@dragooon.net>
Add callbacks to search API when a post or topic is removed or moved

Signed-off-by: Shitiz Garg <mail@dragooon.net>
Merge pull request #1632 from Dragooon/search-api

Search API cleanup