Overhaul CMDProcessor to fix deadlock and allow redirection

* Make CMDProcessor a utility class.  Methods start*() start an async child
  process and return immediately.  Methods run*() are convenience methods
  that wait for the child and return the results.

* All sh and su commands are run with the -c option.  This frees up child
  stdin for piping data.

Note CMDProcessor.canSU() no longer caches results.  This is consistent
with super user implementations, whose behavior can change dynamically at
runtime based on the user's input and responses to prompts.

PS2: Amend (get|set)SystemProp methods, use internal class instead of
CMDProcessor

Change-Id: I070bcad8a1fbe7326abe2154d45796ee6d2beb67
Signed-off-by: Tom Marshall <tdm.code@gmail.com>