いきなり解決策
CakePHP2.x系では、Controller のインスタンス生成時に、 CakeRequest() オブジェクトと CakeResponse() オブジェクトが必要。その設定がされてない場合にこのエラーが出ます。なので、指定すればOK。
// before
new Controller();
// after
new Controller(
    new CakeRequest(),
    new CakeResponse()
);
背景
僕の場合は、とある事情により、Shellで、Controller->render()を実行する必要が出て、その際にこのエラーに遭遇したため、上記対応で解決しました。
コアのソースを見たところ、エラー箇所は以下
// lib/Cake/Controller/Controller.php
 934     public function render($view = null, $layout = null) {
// 省略
 959             }
 960         }
 961
 962         $this->autoRender = false;
 963         $this->response->body($this->View->render($view, $layout)); // ここでエラー
 964         return $this->response;
 965     }
ここで、そもそも、$this->response が空であることがわかったので、コンストラクタを確認
// lib/Cake/Controller/Controller.php
 319     public function __construct($request = null, $response = null) {
// 省略
 340         if ($response instanceof CakeResponse) {
 341             $this->response = $response; // ここでセット
 342         }
なるほど、CakeResponse オブジェクトをセットする必要があると分る。
という流れで調査しました。
おそらく、CakePHP1系では、Controller にこういう引数は無いので、1->2の切り替えをするときに遭遇しそうな不具合(ニッチ)ですが、参考になれば幸いです。
