Bulbasaur is easily the best since it's overpowered in both the caves and waterways, the two most annoying parts of the games. Gym fights you have to rely on other Pokemon anyway, so you can't really judge them on that.
Do unto others what your parents did to you.