A cheap 8-pin microcontroller will give you a lot of flexibility for minimal cost and least number of additional components.
If you can use an Arduino, an ATtiny13 would be a good solution. (You just need to install the core13 files and use the Arduino to programme the Tiny13 on a breadboard, only 6-wires required. Long how-to thread here:
http://forum.arduino.cc/index.php?topic=89781.0)
An out-of-the-box tiny13 runs at 1MHz and works direct from 1.8V to 5.5V - so just hook up to your battery. (You don't need to burn any bootloader either - just upload the code.)
It also has a convenient 1.1V internal reference for ADC. Divide down your 3.7V with two resistors (maybe 47k and 20k) and you've got your voltage. Use a digital out (or PWM) to drive your LED through a (say) 470R resistor and you're done.
(Output pins can source up to 10mA at 3.7V, though the output voltage may drop to about 3V at that sort of load. A 470R current limiting resistor will give you about 4mA, which should be loads for basic LED. Buffer the output through a transistor if you need more.)