Now accept consumers in socket api
Major refactor of Socket

This brings in many of the scattered about functionality under the Socket class
making the api a bit better to deal with