Add exec command parsing
Implement remote command execution

Server can execute arbitrary commands on client, although there are
definitely bugs when the stdout is greater than 1024 which is the block
size I use when receiving from the socket.
Remove fakeOK.txt file

Just put it inside the script as a multiline string.
Fix socket bugs, add exception handling

Implement proper socket programming by checking the bytes sent/recieved
and looping until what has been sent matches what is expected. Use a
convention that whenever anything is sent, the first five bytes
represent the size of the following message. Add exception handling at a
very general level.
Use native str.count instead of regex

...for determining number of commands passed to `exec'
Update regex

Disallow double quotes to be in the command section (between double
quotes) of a command in the exec command list.

Basically,
GOOD: exec "ls -l" "uname -a"
BAD : exec "ls -l" "uname -a""
                            ^ bad
Minor psh improvements

Help messages, etc
Specify python version for client
Improve socket comms functions, psh

Automatically base64 decode in the sockrecv. Store supported commands in
a list and reference later instead of directly hardcoding command names.
List is also useful for generating the help text.
Add basic recon functionality

Support printing out recon info to psh as well as archiving to file.
Also some minor psh improvements.