FluentApi: wrap WebExceptions in ApiException

The rationale of this is to have the URI of the endpoint that was being
hit when a WebException happens (this can happen when an API timeouts).

This is useful to be able to determine if certain API endpoints have lower
reliability than others.
Exceptions: rename ApiException to ApiResponseException

Given that we have now a new ApiWebException which *should* be an
ApiException but doesn't have a Response, then we rename ApiException
to ApiResponseException, and we make it inherit from the new ApiException
which only has a Uri property, which will be a parent of ApiWebException
too.
Exceptions: cleanup, remove unused constructors
Merge pull request #57 from knocte/WrapWebExceptions

Wrap web exceptions as ApiExceptions
All exceptions are serialisable including populating all properties

- Add missing SerializationInfo constructors
- Add manual serialisation hints where required (override GetObjectInfo)
- Tests that round-trip serialise the exception
Fix RoundTripSerialiser to return new object
Merge pull request #59 from danhaller/master

Made all exceptions serialisable
Merge branch 'upstreammaster'