Split backend components

Move backend to its own namespace.
Move Signaler to its own file.
Move backend's components to its own file.

The new backend/frontend will use `LeapBackend(BackendProxy)` and `LeapSignaler(SignalerQt)`, so the names are ok I think.