[ご提案] Cinnamon::Localでsudoと非同期の出力を行えるように修正しました

Cinnamon::Localでsudoと非同期の出力を行えるように修正しました。

この修正で実装をまとめるべき箇所が挙がってきたので、下記の修正も行いました。  
修正箇所が多く、ポリシーにそぐわないところもあると思われるので、マージの要望というよりもご提案とさせて頂きます。

- 実行コマンドを構成するための Cinnamon::CommandBuilder を追加
- Cinnamon::HandleManager に handle() と mkpipe() を追加。handle() は引数のサブルーチンリファレンスを子プロセスで実行し、そのSTDIN/STDERRをハンドルします。 
- Cinnamon::Local と Cinnamon::Remote のスーパークラスとして Cinnamon::CommandExecutor を追加。実行のインターフェースを統一。
- 先の追加にあわせて Cinnamon::Local と Cinnamon::Remote リファクタ
- その他細かい修正
- これらの追加・修正にあわせてテストの追加と修正（既存のテストは出来る限り手を加えないように心がけたつもりですが...）。t/01_remote.tもテストが実施されるように修正してあります。

お時間のあるときに意見をいただけると幸いです。