The ability to control entities that you are riding (other than specifically programmed ones like horses) is simply not in the vanilla game. You could technically move it with a lot of teleporting command blocks, but it would not be based on what keys you pressed.
Stacking a player onto a mob directly is also not really possible. However, you could summon a rideable pig, minecart, boat or tamed horse on top of the entity stack, and then just have the player right click on that to get on. Getting off would just be the dismount key.
For example:
/summon Boat ~ ~ ~ {riding:{id:Bat}}
/summon MinecartRideable ~ ~ ~ {riding:{id:Bat}}
For simply making mobs invincible, this method is now outdated, see David Toh's solution using the new "Invulnerable" tag.
You need to use a resistance effect of level 5 or higher. This is the closest to a simple invincible tag we have at the moment, it gives the mob 100% resistance to damage, so is effectively the same thing. To summon a mob with an effect, you use the tags
{ActiveEffects:[{Id: x ,Amplifier: x ,Duration: x }]}
So for an invincible skeleton, you would say:
/summon Skeleton ~ ~2 ~ {ActiveEffects:[{Id:11,Amplifier:5,Duration:10000000}]}
The only way to kill this mob will then be either through mods, or using void damage (falling out of the world).
Extra Note: The mob may still de-spawn if it's not in a loaded area, to avoid this you can name your mob:
/summon Skeleton ~ ~2 ~ {CustomName:Example Name,CustomNameVisible:1,ActiveEffects:[{Id:11,Amplifier:5,Duration:10000000}]}
Replace "Example Name" with a name of your choice.
In answer to the comment about using multiple effects:
You can have as many effects as you like by formatting your active effects section of the summon like so:
ActiveEffects:[{Id:11,Amplifier:5,Duration:10000000},{Id:14,Amplifier:1,Duration:10000000}]
Full command for invincible and invisible skeleton named "Example Name"
/summon Skeleton ~ ~2 ~ {CustomName:Example Name,CustomNameVisible:1,ActiveEffects:[{Id:11,Amplifier:5,Duration:10000000},{Id:14,Amplifier:1,Duration:10000000}]}
Best Answer
Yes, there is a way in the 1.8 snapshots.
Using a RedStone clock give all entities that damage the player a huge weakness effect:
Note that @e targets players and thus so that only mobs get a weakness effect you have to put in an ID for the entity type. You will have to have a few command blocks each for each type of hostile entity(One each for zombies, skeletons, endermen, creepers{change gamerule doMobGriefing to false}, zombie pigmen, ghasts and blazes). This prevents them from doing damage to the player. Note also that if you give them a weakness level of more than 127, it has a negative effect, meaning it will give them basically 127 strength.
Another method that can be used in 1.7.x is giving all the players a resistance effect like you did but weaker, and then giving players a strength effect that overpowers the resistance.
Strength:
Resistance:
This will give all players resistance 4 and this is enough to make them invincible to mobs. They will still take hits but will not take any damage. Note: I am not actually sure if Strength 6 is enough to overpower Resistance 4. If it isn't, just give a higher strength. If the Resistance is too low, give them a higher resistance and higher strength. Just look for the balance. :)
A few questions:
So yes, there are ways to do it in vanilla Minecraft.
Hope I helped!