ClientUser - I/O for Helix Server commands

The ClientUser class is used for all client-side input and output. This class implements methods that return output from the server to the user after a command is invoked, and gather input from the user when needed.

Member functions in this class are used to format and display server output, invoke external programs (such as text editors, diff tools, and merge tools), gather input for processing by the server, and to handle errors.

Customized functionality in a Helix Server application is most typically implemented by subclassing ClientUser. In order to enable such customization, nearly all of ClientUser's methods are virtual. The default implementations are used in the p4 command-line client.