Move out most logic to AbstractUri

The Uri class itself should only be a container for the `component`
calls.
Oops. Forgot to nest into the `Components` module
Initial tests for AbstractUri