Enabled implicit conversion of unknown objects

Now users can automatically convert unknown objects
and use them directly in `sisl` methods that are
implemented for various methods.

E.g.

.. code::

   import ase
   import sisl

   gr = sisl.geom.graphene()
   sisl_rotated = sisl.rotate(gr, ...)

   gr = ase.Atoms(...)
   atoms_rotated = sisl.rotate(gr, ...)

   gr = ase.Atoms(...)
   sisl_rotated = sisl.rotate(gr, ..., ret_sisl=True)

will all work, the first and last will return a `Geometry`, while
the middle one will return an `ase.Atoms` object.

To forcefully return the `sisl` object, use the latter form with ``ret_sisl``.
