add_retrieve_handler throws if the handler is not found
Added macros : REGISTRABLE_RETRIEVER and REGISTER_RETRIEVER
add_retrieve_handler : added logic
remove_retrieve_handler : erase map entry if no retriever is left