convert to haskell: skipagent.c を haskell コードへ以降させる準備

元々のskipagentは並列スレッドとして動作しているが、並列スレッドを運用するには、スレッド間の
連絡のために共有変数が必要となる。
並列スレッドをHaskellで行おうとした場合は、それが Haskell 内で完結している場合であれば
TVar を用いることでスレッド間の連絡を行うことができるが、
しかし今回は C - Haskell 混在で、スレッドも、 Cスレッド - Haskellスレッド の並列となるので、
この場合はスレッド間連絡に TVar を用いることはできない。
（TVarによる共有変数を使うには、それを使うスレッドが同じ（Haskellの）関数から生成されたスレッドでなければならない。
 しかし、Cスレッドをそのように生成することはできない。よって TVar を共有変数として用いることができない）

そこで、この問題を回避するためのアイディアとして、以下の方法を考えている。

1.Haskellスレッドで行う 3つの関数(init, throw, close)を、
  それぞれHaskellスレッドとして（TVarが使える状態で）生成する。
  （Haskell側では3スレッドが並列に動いてる状態）

2.そして、C側で大域変数 skip_agent_context を用意し、
  C側の 3つの関数（init, throw, close）は、この（C側の）大域変数へ、要求を書き込む。
  （C側では１スレッドが動いてる状態）

3.Haskell側の 3つのスレッドは、
  それぞれが独立して、FFI経由によって、C側の大域変数（skip_agent_context）を監視しつづける。
  そして、もし何か要求があって、それが自分の仕事であるならば仕事を行う。
  そして、場合によっては結果をFFI経由でC側の大域変数（skip_agent_context）へ書き込む。

4.Haskell側の 3つのスレッド同士は、TVarを介して連絡を行えるので、基本的にTVarだけで連絡を行う。

以上の方法を考えている。
その準備として、C - Haskell間での読み書き機構をFFIによって実装して追加した。
現状ではコードとして組み込んであるが、実際の動作には無関係な状態で動いているので、事実上、動作には何も影響していない。