refactor monad instance to be join based definition.
added monad transformer instance. Not tested.

Faceted cannot be foldable nor traversable.  It is because that a nested faceted value has bunch of principles in internal nodes and these cannot be folded.  In the first place,  a faceted value is a model for ONE conditional value.  So,  it was very strange if faceted values are foldable.
updated TODO.