Refactor sparse module

This PR is a code clean-up of the qutip.sparse module. It separates qutip.sparse and qutip.qobj, and the thinking is that qutip.sparse should be completely independent of qutip.qobj, and qutip.sparse should be considered for internal use in qutip and does not need to be imported by default. All functions in qutip.sparse that are used in other modules should not start with an underscore. 

@nonhermitian, this PR touches on some of your recent work so please code review this.