Add custom APIConnectionException

- Catch exceptions for connection, send/receive and throw custom
exception that wraps the initial exception.
Make ActiLifeAPIConnection disposable.
Ensure thread safety around NamedPipe.

- Lock every access to the pipe.
- Throw exceptions if pipe isn't connected.