externalized packing from protocol

Packing is now isolated into it's own package since the default xdr packing
is lacking for future purposes and should at some point be replaced.

This commit aims to make it easier to experiment with alternative packing
methods.
cleaned up lambda mess with field types

Made concrete types with specific 'pack' and 'unpack' methods in favor of the
lambda-based implementation.

This aims to offer the same amount of flexibility but improve clarity.
fixed some protocol.py indentation, whitespace and commenting issues
Simplified the abstraction on top of the serialization mechanism.
Added unit tests for seralization binary format
Merge pull request #2 from noaresare/protocol-cleanup

So, i think there has been enough time for feedback, merging now
Bumped to 0.1.1
Updated SigningPlug API to work around calling inconsistency
Actual usage instructions in the README
Merge pull request #4 from noaresare/docs_fix

Actual usage instructions in the README
Add less generic exceptions per #5.

Change-Id: Iae78d2a126997c0922a4ec133eb107ae44f93e4a
Set 5 second timeout on SSH agent socket per #6

Change-Id: Idb23d23464d07efc1b336679db6e6df26f376fd8
Bump version to 0.1.3

Change-Id: Ib070c81f2285e386e88c4dc871a4a698bcc4f7b8
Merge pull request #7 from negz/master

Add specific exceptions and handle SSH agents with no added keys
Patch up unit test I broke in pull request 7
Merge pull request #8 from negz/master

Patch up unit test I broke in pull request 7
Test case token verification with wrong secret always succeeded

The hard coded data in the test case had the previous token format,
and would always fail regardless of whether the secret was wrong or
not. The test is now updated to verify that the verification succeeds
with the correct key and fails with the incorrect one.

Good news is that the code it tests worked :)
Merge pull request #9 from noaresare/pr/wrong_secret_testcase_fix

Test case token verification with wrong secret always succeeded