First upload of the qtrl modules

Main module control.ctrlpulseoptim provides functions for optimising control
pulses for quantum systems. Relies on the other classes for processing.

Uses the BFGS (actually primarily the L-BFGS-B) algorthim, which is a quasi-second order Newton method for multivar function optimisation

Examples in the 'examples' folder to demonstrate usage.
1. Hadamard - a simple example of Hadamard gate synthesis
2. Lindbladian (open systems) - amplitude damping channel example
3. Symplectic - a coupled oscillator example
4. QFT - a 2 qubit example, showing alternative (more configurable) method for invoking the optimisation
First thing to change in the API to make these function more interoperable with the rest of qutip would be to make H_d, H_c, U_0 and U_targ be Qobj. I would recommend starting with that. You can simple cast these arguments back to numpy arrays using Qobj.full() in the beginning of this function to make, so you don't need to change any of the internals if you add things like this:

    if not isinstance(H_d, Qobj):
        raise TypeError('H_d must be a Oobj')
    else:
        H_d = H_d.full()