I highly recommend "Alarming!".
I use it daily. It allows multiple alarms, including a quick, temporary alarm which is helpful.
Each alarm has many settings: Label, Time, Repeat (pick which days), snooze length, puzzle on snooze, puzzle on dismiss (when you turn off the alarm), vibrate toggle, ringtone picking (you can make ones with apps like ringdroid and then load them here -- that's what I do), alarm volume, alarm crescendo, and alarm delay.
The puzzle for snooze/dismiss can be a dot puzzle where you have to press certain dots or a math problem. I use this on my morning alarm and it makes me pause long enough while doing it to decide to get out of bed.