Slopes should be easy to handle. Just give each square an elevation statistic. You wouldn't even have to draw the elevation if you didn't want. If the elevation difference is too high the slope is impassible. I'm sure DI can handle the technology Battletech has been using since the 70s.
Having one level over top of each other is a lot tougher. If you're just creating contour on a flat map, your rules of connectivity don't change. If a square is next to another one, you can travel between them. But if you've got levels, you have to define connectivity between squares instead of just having the default "everything touches what it touches" as the rule.
If you do define connectivity, though, the sky is the limit in terms of complex maps. You could do rigging, you could do anything. For rigging, you'd just draw some rigging and define points on it where a character can be.
As for flying, that's a different issue. That should be pretty easy. Give characters in a flying state an elevation, and animate them up in the air. The rules already cover 3d area of effects- or I should say, they cover them as well as they cover firing diagonal on a grid. The only additional programming you might not think of is the need to program in a ceiling.
And of course there's the one giant shortcut people are forgetting- Let the DM draw any map he wants, and let the players do whatever the heck they want with their miniature. Then the DM can tell them whether they can or can't do the thing they tried.
This is probably the best solution. Programming in game rules is silly because it will create havoc with house rules, special events, etc, etc. Just let players place their pieces anywhere they want on the map, and move them however they like, and the DM can handle the rest.
That's how a normal game map works. No law of physics stops my miniature from climbing up a sheer wall in plate armor without making a climb check. Just the DM.