Add _.collateBy for collating ordered collections by a given criterion

This patch adds an `_.collateBy` method, similar to `_.groupBy` but designed for collating ordered collections by a given criterion.

Collation is useful when you want to display a collection in a particular order while grouping similar items together under a common heading or in a shared section.

#### Example: Grouping a conversation by author

```javascript
var messages = [
  {author: "Bob", body: "Hello"},
  {author: "Bob", body: "Are you there?"},
  {author: "Jane", body: "I'm here."},
  {author: "Jane", body: "How can I help you?"},
  {author: "Bob", body: "Nevermind."}
];
```

```jst
<div class="messages">
  <% _.each(_.collateBy(messages, 'author'), function(group) { %>
    <section>
      <header class="author"><%= group[0] %></header>
      <% _.each(group[1], function(message) { %>
        <article class="message"><%= message.body %></article>
      <% }); %>
    </section>
  <% }); %>
</div>
```

```html
<div class="messages">
  <section>
    <header class="author">Bob</header>
    <article class="message">Hello</article>
    <article class="message">Are you there?</article>
  </section>
  <section>
    <header class="author">Jane</header>
    <article class="message">I'm here.</article>
    <article class="message">How can I help you?</article>
  </section>
  <section>
    <header class="author">Bob</header>
    <article class="message">Nevermind.</article>
  </section>
</div>
````

#### Example: Displaying an event timeline

```javascript
var events = [
  {date: "2012-12-14", project: "New Product", author: "Scott", description: "commented on: Status update"},
  {date: "2012-12-14", project: "Operations", author: "Trevor", description: "commented on: Unexpected downtime"},
  {date: "2012-12-14", project: "Operations", author: "John", description: "commented on: Unexpected downtime"},
  {date: "2012-12-14", project: "New Product", author: "Ryan", description: "posted a message: Status update"},
  {date: "2012-12-14", project: "Redesign", author: "Ryan", description: "added a to-do: Tighten margins"},
  {date: "2012-12-13", project: "Redesign", author: "Jason", description: "completed a to-do: Explore alternate layout"},
  {date: "2012-12-13", project: "Operations", author: "John", description: "posted a message: Unexpected downtime"},
  {date: "2012-12-13", project: "Operations", author: "Taylor", description: "completed a to-do: Monthly firedrill"},
  {date: "2012-12-13", project: "New Product", author: "Ryan", description: "commented on: Checklist for launch"}
];
```

```jst
<div class="timeline">
  <% _.each(_.collateBy(events, 'date'), function(eventsByDate) { %>
    <section class="date">
      <header><%= eventsByDate[0] %></header>
      <% _.each(_.collateBy(eventsByDate[1], 'project'), function(eventsByProject) { %>
        <section class="project">
          <header><%= eventsByProject[0] %></header>
          <% _.each(eventsByProject[1], function(event) { %>
            <article class="event">
              <span class="author"><%= event.author %></span>
              <span class="description"><%= event.description %></span>
            </article>
          <% }); %>
        </section>
      <% }); %>
    </section>
  <% }); %>
</div>
```

```html
<div class="timeline">
  <section class="date">
    <header>2012-12-14</header>
    <section class="project">
      <header>New Product</header>
      <article class="event">
        <span class="author">Scott</span>
        <span class="description">commented on: Status update</span>
      </article>
    </section>
    <section class="project">
      <header>Operations</header>
      <article class="event">
        <span class="author">Trevor</span>
        <span class="description">commented on: Unexpected downtime</span>
      </article>
      <article class="event">
        <span class="author">John</span>
        <span class="description">commented on: Unexpected downtime</span>
      </article>
    </section>
    <section class="project">
      <header>New Product</header>
      <article class="event">
        <span class="author">Ryan</span>
        <span class="description">posted a message: Status update</span>
      </article>
    </section>
    <section class="project">
      <header>Redesign</header>
      <article class="event">
        <span class="author">Ryan</span>
        <span class="description">added a to-do: Tighten margins</span>
      </article>
    </section>
  </section>
  <section class="date">
    <header>2012-12-13</header>
    <section class="project">
      <header>Redesign</header>
      <article class="event">
        <span class="author">Jason</span>
        <span class="description">completed a to-do: Explore alternate layout</span>
      </article>
    </section>
    <section class="project">
      <header>Operations</header>
      <article class="event">
        <span class="author">John</span>
        <span class="description">posted a message: Unexpected downtime</span>
      </article>
      <article class="event">
        <span class="author">Taylor</span>
        <span class="description">completed a to-do: Monthly firedrill</span>
      </article>
    </section>
    <section class="project">
      <header>New Product</header>
      <article class="event">
        <span class="author">Ryan</span>
        <span class="description">commented on: Checklist for launch</span>
      </article>
    </section>
  </section>
</div>
```