Refactored stem and beam, added .postFormat() to API

**Fixed Articulation/Annotation positioning:**
![image](https://cloud.githubusercontent.com/assets/1631625/2746457/cf8632ce-c747-11e3-80ea-ce2151821d09.png)

- Refactored `Stem` lifecycle so that it begins when a `StaveNote` is created
- Refactored `Beam` drawing
- Add `.postFormat()` to base classes
- Add `stave` option to `Formatter.format()`
- Add comments to `beam.js`, `voice.js` and `stem.js`
- Fixed articulation/annotation positioning with beams, positioning now relies on new method `Stem.getExtents()` instead of `StaveNote.getStemExtents()` (*I realize this might a bit confusing. Really it would be optimally renamed to`StaveNote.getDefaultStemExtents()`*)
- Added tests for articulation and annotation positioning with beams
- Fixed broken `NoteHead` test

Realizing that this is kind of a big PR. Sorry about that! Let me know what you think I should clean-up/change.

Also, my commits should be more lint clean from here on out. I've never gotten the rakefile to work, but I finally fixed my linting plugins in my editor.