build: use mke2fs/debugfs to create disk image rather than genext2fs.

genext2fs can only create a revision-zero ext2 filesystem, while mke2fs has a lot of control over the filesystem generation.
ext2: only align directory entries to 4-byte boundary if they are not already.
ext2: support non-standard inode sizes, allow mount of filesystems requiring compression, add inode write method
ext2: fix inode i_blocks field usage in Ext2Node, write back inode when it is modified