Forge is not even out for 1.12 yet, much less any mods for it...
MCEdit on the other hand is compatible with pretty much any version of Minecraft, including future versions, as long as they do not change the save format (which I've heard that they will in 1.13). It will just show unknown blocks with missing textures and call them "future block" and unknown items will be called just that; I've used it to open modded words with no issues besides that (I still use an old version which was released in May 2013 and even some blocks that were added in 1.5, released prior to then, are not fully recognized (the pink blocks in the screenshot are quartz. I've even opened 1.8+ worlds with it and it did not crash or give any errors; all items were listed as unknown since it doesn't understand alphanumeric IDs. Of course, some operations, like editing spawners and other tile entities/NBT data, won't work due to changes in the format since then, but there should not be any issues with replacing non-tile entity blocks).
In order to replace a block with an unknown block you have to manually enter the block ID and data value (e.g. 1:1 for andesite); the ID for concrete is 251 and while the Wiki does not list the numerical data values I believe they go from 0 to 15 in the same order as listed here (you can check this by setting a few blocks and loading the world; most new blocks added since 1.8 or so do not have numerical data values listed in the Wiki but they are still used within the save file).
I do not know if there is a hard limit to what MCEdit can handle but I've used it to analyze a 383 MB world with close to 80,000 chunks on a 32 bit system (and version of MCEdit) with no issues despite the uncompressed size being some 10 times larger (exceeding all the RAM my computer has); obviously, such a large operation would be slower due to having to swap to disk (MCEdit doesn't use any more memory than specified for the block buffer (found under options, it seems to default to 256 MB), which can be increased if you have more RAM. I believe that certain operations are limited by this, but not simple ones like a find/replace). For large operations you'll probably want to disable undoing since it will save a copy of all chunks that are to be modified before making any changes, significantly slowing things down (beware that any mistakes will require starting over).
I want to replace all of the blocks in my world with concrete, however there is not a MCEdit version for 1.12 yet. Is there another way I can replace all of the blocks in my world easily?
There is a way, but the one thing I think you're overlooking is that air is also considered to be a block within the Minecraft mechanics. So if you want to change all of the blocks with concrete for one chunk I'd do something like: /fill ~-8 1 ~-8 ~8 ~-1 ~8 minecraft:concrete 8. This would replace all the blocks below you with light grey concrete.
Maybe noteworthy is that the /fill command can also be used to replace specific blocks with another block. So you could use that to replace 'stone' (which would include the stone variants) and 'dirt' (though that wouldn't include grass).
Considering that we're talking 1.12 I'd probably make some kind of function to replace specific block types (stone, dirt, grass) and then simply call that function for wherever you are. The range would be limited though so it will take you a considerable amount of time to sort this out.