Added Xmatch service (fixes issue #49)

Real non-remote tests are still missing, will add them later today. Opening a PR already anyway to get some feedback from you :-)
It's good to test that you get the expected error message too:
```
with pytest.raises(ValueError) as ex:
    assert str(ex.value) == "Expected Error Message"
```
both because it tests the condition more accurately and because it effectively leaves a comment in the tests indicating what the test is *actually* trying to test for (in this case, that the maximum distance is <= 180 arcsec)