Update jsdoc grunt task

This update adds three things to the `jsDocFiles` task:
    1. a new task file that's well factored
    2. support for bodies with description and examples (functions, properties, constructor)
    3. body parsing for properties and constructor (it now supports description, or description + examples)


Here's an example from the great `helpers.jsdoc`, where a function has a description and examples.

```yaml
  actAsCollection:
    description: |
      Mix in methods from Underscore, for iteration, and other collection related features. Borrowing this code
      from `Backbone.Collection`. See http://backbonejs.org/docs/backbone.html#section-121
      
      @api public
      @static
      @param {Object} object
      @param {Object} listProperty
      
    examples:
      -
        name: Object Literal
        example: |
          It works by taking an object and a property field, in this example 'list',
          and appending collection functions to the object so that it can
          delegate collection calls to its list.
          
          ```js
          var obj = {
            list: [1, 2, 3]
          }
          
          Marionette.actAsCollection(obj, 'list');
          
          var double = function(v){ return v*2};
          console.log(obj.map(double)); // [2, 4, 6]
          ```
          
      -
          name: Function Prototype
          example: |
            ```js
            var Func = function(list) {
              this.list = list;
            };
            
            Marionette.actAsCollection(Func.prototype, 'list');
            var func = new Func([1,2,3]);
            
            var double = function(v){ return v*2};
            console.log(func.map(double)); // [2, 4, 6]
            ```
````