Refactor to unify implementations of TCPLircRemote and LircRemote

The difference between TCPLircRemote and LircRemote is that the former
connects to a TCP socket whereas the latter connects to a UNIX domain
socket.  This refactoring unfies the two implementations by introducing
factory functions which inject sockets into the single `LircRemote`
implementation.

This commit saves 5 lines of code but the original motivation was to add
a `hold()` method to the Remote implementations.  Nonetheless I believe
this commit stands on its own.

Neither LircRemote nor TCPLircRemote are intended as public API so this
is not a API break.