Hi, folks

   I am trying move api implement to sub-module, then we don't need singleton and passing clientif to anywhere. So I sent this mail to descript the idea. I think it's good for review.

   So I add api registeration mechanism. Other modules can register it's api implement to api layer.
I try to move VM api and vm stuff(like clientif.vmContainer, etc) to a new module called vmm. the vmm.VMM is similar with hsm. It's responsiable for managing vm and register VM implement to api layer.
Same with hsm, I move all storage related api to hsm, and hsm will register them to api layer.

  After all api move to submodule, we can rename clientif and needn't passing client to any where. :)

  I have already submit a rough version to gerrit: http://gerrit.ovirt.org/#/q/status:open+project:vdsm+branch:master+topic:wip_refactor_clientif,n,z

  Appreciate any comment and review!

  Thanks!
  He Jie