REF: pytables prepare to make _create_axes return a new object
in the next pass we'll make create_axes return a new object, and instead of altering a bunch of attributes in create_axes, we'll pass them to the constructor for our new object just before returning

Doing all that makes for a pretty big diff, so this splits out some pieces.  The biggest one is implementing _get_blocks_and_items, which I find helpful since its a big chunk of code that i dont have to keep re-checking if it alters state.