support :collection with block syntax

* add Fragment#replace
* make private: Fragment#replace_collection, Fragement#replace_from_hash
* rename local variables in #render_cached
* test rendering collection with block