Add error codes

ErrorCode enum を追加することで、エラーコードの解釈が必要な際に各人が定義する定数リテラルに頼らずエラーの原因が解釈できるようにします。現状の設計では Error.Code 自体は int のままにし、適宜 ErrorCode へのキャストを挟むことを想定しています (ErrorCode の列挙値に無いエラーコードは `Enum.IsDefined(typeof(ErrorCode), (ErrorCode)value)` が false になることなどで判別可能です)。

TODO (until merge): エラーコード列挙値のネーミングルールの確認