#47 Added protocol setup interface/concrete

I hate adding interfaces that are just models though.
#47 Reworked Protocol to use Options/Setup method

Lots of little changes everywhere, but now Protocol and Client use
parameterless constructors like all other classes in the solution.
#47 Renamed Additional/Variables to Arguments
Merge pull request #48 from Myrcon/issue-47

Resolve Issue #47