Major design overhaul

The existing design wasn't working for me, so I wanted
to change it to look a bit more modern while still using
splashes of color (but not 27 colors!)

This moves a lot of the controls from the top or left
to a sidebar on the right of the project.  This includes
like, edit, email, calendar, etc.

Task and Event views get a more list-like treatment inline.
They are bounded to a max-height, and become scrollable
div's after that.  Tasks are allowed to be larger than
events.

Buttons are hidden if you are NOT logged in, so you can't try
to add a task or post a comment (that was confusing me, so
it made sense to just remove those DOM elements when the
user is logged out)

CSS is consolidated into a series of general styles for
boxes and padding (box, box-pad-lr, box-pad-t, box-main)
Color treatment still occurs in the app-specific css
(in this case, innovation-theme.css).  So all your colors
can be changed there.

Not everything is hooked up in Backbone, but everything
that worked before should still work (only new stuff needs
implementation)

The task show page did not get the new treatment because
that page seems like it is in a major state of flux and
was not merged with sprint8

Github issues to file:
- Comments need to roll up and expand on click
- Event rsvp button doesn't seem to work
- DK's work on making project edit like profile edit
- Say 'no discussion yet' when no discussion.
- Move fonts into the project instead of linking
  to Google's servers (for off-network deployments)
- Create a default project picture for both
  show and list views
- Icons next to each main section in project?
Add project close/reopen functionality

Clicking close project shows a message at the top
and closes the project.  Reopen does what you'd expect
Update button classes for new design.
Always return the model with success

Without the model, how do you know which project
you're operating on?
Implement UI search functionality

This is the UI side of search -- selecting tags,
adding them to your search terms, and deleting them.

This still needs to be hooked up to the backend
search query, which would return the matches for the
search and then the page would be re-rendered.
Button to clear all search terms

May want to clear everything in one fell swoop.

This button does that.
Better bg color for c1 button

Matches the nav li color.
Make select2 look like our app

Skin more of the select2 components so that it looks
consistent with our input boxes.
Search is functional!

Backend now renders search results,
and UI displays either search results or the
project collection depending on how many
search terms are specified.

The search right now is an 'OR' search.
I know that's not what we want -- we want
to 'AND' the terms.  That was a lot more work.
So for this first version, the terms will be
'OR'd together, and probably an option later
will be to choose either 'OR' or 'AND' functionality.

But it works and renders correctly.
Fix regression in proj owners

Should have been checking data.isOwner first.

If that's set, then you know cache.currentUser is defined
since the user has to be logged in.  So then check if it
matches the current user.
Need padding around new topic form

Correctly seperates it and renders it.
More stringent error tracking for bad projs

Sometimes projects get orphaned in the db, hopefully this
fixes the server from crashing.
Create 'Browse' app

This is a refactoring commit to make the browse logic
independent of projects.  By doing so, we'll be able
to instantiate the browse view for different types of
things, such as people, opportunities, and projects.

Right now, this is only working for projects, but
this refactor was necessary to take the next steps.

This refactor makes one important change -- the
list of items (projects) in the browse view are rendered
seperately from the rest of the page.  This allows
the page to render (search boxes, etc), while the data
from the server loads asynchronously.  This change is in
line with the philosophy that all pages should LOAD and
RENDER immediately, with subcomponents rendering as the
data is available.

Most of the routing logic is going to migrate to
browse_app.js, as it makes much more sense to handle
how triggers to projects, tasks, etc work.  This is in
line with the common backbone paradigm of only having
one application router.
Add 'Browse Opportunities'

Based on a discussion with Mollie, use the browse app
to browse through different types of things.  In this case
you can now browse opportunities.  Opportunities can be
filtered by the tags that apply to tasks (although this
has not yet been added to the tag config in tag.js)

The styling for task "cards" is not yet implemented.
This is just a POC and will be filled out shortly.
Clean up RSVP button fns

The jquery element selector was just wacky and totally
dependent on the HTML structure.  Fix that by looking for
the div.event parent, and then the appropriate children
from there.

Correctly render the button, and include a utility function
to update the # of people going immediately.

Add a cancel RSVP hover state to provide more feedback
when you're going.
Update RSVP UI before ajax call

To make the UI more responsive when there's
latency, render the UI changes first, then make the ajax
call.

We're not doing good error handling on the page, so at
some point we really should settle on a policy and
implement 'error' functions on ajax calls.
Consolidate routers

With multiple routers, it is almost impossible to
cleanup views/controllers when navigating between them.
Failure to do so leads to multiple events being triggered
across controller and ultimately faulty logic.

With everything in a single router (we're not there yet,
but that's the goal and the recommended Backbone paradigm),
we can correctly cleanup, reset data, and instantiate the
right controllers.

This fixes a bug with likes buttons triggering all kinds
of chaos on pages you previously visited in your
backbone history.
Finalize router consolidation

All routes are handled by browse/browse_app.js.  This can
have awesome implications for messaging between the sub-apps
like profile and navigation.

This should likely be moved straight into apps_router.js;
leaving that for a future optimization.