Reduce coupling between Block and ReadInstr<T>

* Remove private Block::bulk_insert(const ReadInstr<T>&)
* Add private Record::insert_all(const ReadInstr<T>&)
* Add public Block::insert_all(const std::forward_list<Event>&)
* Make Block::insert_event_ptr() public
* Add Block::make_root()