Abstract out client from interface

So this may not be fully tested, and may have architectural flaws, but here it is none the less.  The idea was to consolidate the places where the system that communicate with the outside VeraLite endpoint.