Galladiator, take a Jigglypuff. Name it Rainbow. Once you catch it, it must battle 4 Pokemon without switching out. Its final moveset must consist of the four types of those Pokemon that you beat. If Rainbow faints against one of those Pokemon, you are not allowed to use that type, same goes if you switch out. If it cannot learn a move of that type, use the secondary type, and if that doesn't work, ignore the type and move on to another 4. Evolve whenever you want.
Note: Jigglypuff learns all type moves but Dragon, Steel, Flying (which isn't a main type anyway) and bug.