+ * イベントリスナを追加する。同一イベントに対して重複するリスナ(context, function, 引数 array が一致)の追加は無視される。\r
+ * ユーザーが触ることは無いが、システム内部でロックフラグを立てたリスナは、立てられていないフラグとは区別される。\r
+ * この仕組みによってシステムの登録したリスナを、システム外から不用意に削除されることを回避する。\r
+ * @example // 'myEvent' に対して、 this コンテキストを指定して 、コールバック関数を渡す。\r
+ * this[ 'listen' ]( 'myEvent', context, func );\r
+ * // 'myEvent' に対して、 this コンテキストを指定して 、コールバック関数と追加の引数を渡す。\r
+ * args = [ 'arg1', 'arg2', 3 ]; // unlisten( 'myEvent', context, func, args ) で使用するので Array も控えておく。\r
+ * this[ 'listen' ]( 'myEvent', context, func, args );\r
+ * // 'myEvent' に対して、 listener オブジェクトを渡す。listener は handleEvent という関数を持つオブジェクトのこと。\r
+ * listener.handleEvent = function( e ){};\r
+ * this[ 'listen' ]( 'myEvent', listener );\r
+ * // 'myEvent' に対して、 listener オブジェクトと追加の引数を渡す。\r
+ * listener.handleEvent = function( e, arg1, arg2, arg3 ){};\r
+ * this[ 'listen' ]( 'myEvent', listener, [ arg1, arg2, arg3 ] );\r
+ * // 'myEvent' に対して、 function を渡す。\r
+ * this[ 'listen' ]( 'myEvent', onMyEvent );\r
+ * // 'myEvent' に対して、 function と追加の引数を渡す。\r
+ * this[ 'listen' ]( 'myEvent', onMyEvent, args );\r
+ * // 次の二つは同じ動作です。 this コンテキストが与えられなかった場合、コールバックの this は発火元インスタンスになります。\r
+ * this[ 'listen' ]( 'myEvent', this [, func [, args ] ] );\r
+ * this[ 'listen' ]( 'myEvent' [, func [, args ] ] );\r
+ * // 複数のイベントタイプを同時に登録。コールバックは同じ指定が使われる。\r
+ * this[ 'listen' ]( [ 'open', 'close', 'ready' ], onUpdate );\r