Markdown generation is handled by Mustache templates

A docblock generator should really just take an AST and pass it off to a templating engine. This PR removes all hardcoded string manipulation to generate markdown. We keep `analyze()` to transform the AST into a more usable form since templates are logicless.

Current output for test.js:

foo
---

Can I get some description please
  on more than one line, if possible.

foo.bar() 
-----------------------------
I so cool

Deprecated 

**Returns**: Boolean | null, I so cool

foo.testNamed(file, optional) 
-----------------------------
This is a test function
  with a description on multiple lines

**Parameters**

**file**: String | null, filename to parse
                       this parsing thing is funny business

**optional**: Boolean | null, Changes behavior

**Fires**: module:foo#event:one_thing

**Fires**: module:foo#event:another

**Fires**: module:foo#event:booyah


foo.testAnonynous() 
-----------------------------
function without name

**Returns**: String, the result

foo.testAnon2() 
-----------------------------
second function without name

**Returns**: String, the result

foo.func1(a, b) 
-----------------------------
Can I get some description please
  on more than one line, if possible.

**Parameters**

**a**: the first param

**b**: the second param

**Returns**: the result

foo.func2(c, d) 
-----------------------------
Can I get some description please
  on more than one line, if possible.

**Parameters**

**c**: the first param

**d**: the second param

**Returns**: the other result

foo.testDeprecated() 
-----------------------------
This is a deprecated function.

Deprecated 


---

*(c) 2012 Blah Blah Blah*

**License:** MIT Joe Schmo

**Overview:** What's up?

**Version:** 1.0.1

Originally wanted this to be a helper function passed to mustache. Unfortunately, helpers aren't flexible enough, so the output format for the params of a function and the types of a param have been hardcoded.

Example:

`foo(a, b)` where the params list contains a and b and we generate `paramsString` to be `'a, b'`.