Added new logging and settings support, started refactoring debugs.

This change enables the use of Python standard logging, and backs it by a new qutip.settings entry. A few instances of classic ``if debug: print`` style logging have been refactored. The new ``qutip.settings`` entry is based on [configobj](http://configobj.readthedocs.org), with a fallback to classic ``~/.qutiprc`` parsing if that library is not available. Errors in the new functionality introduced by this commit are also logged, and can be accessed by setting up ``logging.basicConfig`` *before* importing QuTiP. The optional configobj dependency should almost always be met, since it's shipped with matplotlib.
In some cases multiple levels may be helpful. For instance when calling the scipy.optimise.fmin_l_bfgs_bthe iprint parameter works as follows:
"Controls the frequency of output. iprint < 0 means no output; iprint == 0 means write messages to stdout; iprint > 1 in addition means write logging information to a file named iterate.dat in the current working directory"
so currently I set iprint = msg_level - 1
I also use multiple levels of verbosity in my own code. I would be happy to restrict myself to DEBUG, INFO and WARN though. I would seem like good discipline.
Perhaps we could add something to the settings with a log_level attrib where by default:
log_level = logging.NOTSET

and in this file:
+ if log_level = logging.NOTSET:
+    if qutip.settings.debug:
+        logger.setLevel(logging.DEBUG)
+    else:
+        logger.setLevel(logging.WARN)
+ else:
+    logger.setLevel(logging.log_level)

Otherwise I guess I could just override it with a parameter in the function call... or both