Refactor getBlocks, a cleaner pull

Single clean re-work of
https://github.com/concrete5/concrete5/pull/842

All this does is split getBlocks into 2 parts, where getBlockIDs does the listing of block IDs for an area and getBlocks then turns that into a list of block objects.

Thus other code can now just get the basic list without creating all the objects.