Ensure exception safety when registering new ops
dl_loader: use better error numbers
filesystem: Fix bug using destructed shared_ptr (SEGV)

 When filesystem being destructed, we previously just
destructed ops_db_
 But this may cause the use of destructed shared_ptr of ops_db_
where calling uninstall() method of each installed ops
 Fix this by clearing ops_db_ before destructing it
  (So that uninstall() method of each installed ops can use ops_db_)
Implement module loader file operations