Re-enable profile update

The policy was set to false for *, which doesn't allow
profiles to be updated.  Put in a specific policy for update.
Crop profile images to a square on upload

Profile images as circles look weird if the image itself
is not a square.  This could be solved in two ways:
(1) using <canvas> elements every place a profile
image is shown
(2) cropping the image on the backend when it is uploaded
so that it is square.

I chose to do the latter because it:
- Reduces the amount of data stored
- Is quicker to render (less compute on server and client)

This update REQUIRES two important things:
* Installation of GraphicsMagick
  sudo apt-get install graphicsmagick
* Installation of gm npm package
  npm install
Make photo change icon clickable

Dropzone can take multiple CSS selectors for a given
clickable element.  By passing it the icon along with the
button, both become triggers for Dropzone.
Added reusable concept for task modal.

The task modal needs to be a wizard-esque step by step process.  And it
needs to be modifiable in the future.  Thus, simplicity rules and a way
to iterate through any current item to the next one, and so forth is the
ideal way to handle this (imo).  The concept means we don't save the
state of what item we are on (in digit form), but we do with a current
flag.  That flag is what allows us to push in error messages, and handle
switching logic.
Added reusable concept for task modal.

The task modal needs to be a wizard-esque step by step process.  And it
needs to be modifiable in the future.  Thus, simplicity rules and a way
to iterate through any current item to the next one, and so forth is the
ideal way to handle this (imo).  The concept means we don't save the
state of what item we are on (in digit form), but we do with a current
flag.  That flag is what allows us to push in error messages, and handle
switching logic.
Added reusable concept for task modal.

The task modal needs to be a wizard-esque step by step process.  And it
needs to be modifiable in the future.  Thus, simplicity rules and a way
to iterate through any current item to the next one, and so forth is the
ideal way to handle this (imo).  The concept means we don't save the
state of what item we are on (in digit form), but we do with a current
flag.  That flag is what allows us to push in error messages, and handle
switching logic.
Added reusable concept for task modal.

The task modal needs to be a wizard-esque step by step process.  And it
needs to be modifiable in the future.  Thus, simplicity rules and a way
to iterate through any current item to the next one, and so forth is the
ideal way to handle this (imo).  The concept means we don't save the
state of what item we are on (in digit form), but we do with a current
flag.  That flag is what allows us to push in error messages, and handle
switching logic.
se enter the commit message for your changes. Lines starting
Removed attempted wizard vendor library.
Removed last reference to wizard library.
Abstracted the ModalWizard, and added dynamic form

The Modal was being heavily modified for specifically a wizard-esque
purpose, such as modifying save buttons etc.  As a result of that I have
abstracted all of that out into a new Component.  It is called
"ModalWizard", and you can call it exactly as you do a Modal itself.

The differences between a ModalWizard and a Modal:
- The ModalWizard expects a section by section layout inside of the form
  DOM:
  IE <section></section>
     <section></section>
     etc...
- The ModalWizard also expects at least one of those sections to have a
  'current' class on it.  That current class will be the entry point to
  attach event listeners from the component down into the child form.
  This way we can cycle through the modal as the user clicks Next.
- The ModalWizard expects that the first place within the section layout
  you put the "current" class, is the place you EXPECT the form to load
  to on a fresh render.  So ideally that means on step 1.  But can and
  will work on any step of the process.

Other than that, there are no other expectations.  You still initialize
it in the same way you would a regular component.

TODO:
- Custom code on the next button:
  * Instead of going through the entire series of form sections, and
   getting to a submit button on the form itself it should change the
   next button to a submit or save button upon the last possible
   selection.  This is easily done using the _.isUndefined(next.html())
   function expression.
  * Keep in mind though there will be custom endpoints being passed onto
   save button after it turns from a next to a save/submit.  SO as a
   result of that allow them to pass in that custom endpoint FROM the
   initializer for the ModalWizard.
   IE:
    var modalWizard = new ModalWizard({
      el: "#el",
      title: "title",
      id: "addEntity",
      endpoint: "/endpointForSaveFromFormUsingModalWizard"
    })

Any questions ping me.  @polastre
Overhaul profile to look like project

This is the beginning of the overhaul of profiles to look
the same as projects, with the photo on the left and the profile on the
right.  Much more work to be done; this is a WIP checkpoint.
Getting task view ready for tags.

- Moved back to our original paradigm for task creation, and removed the
  code for the dynamic form generation as per our call on Oct 23 2013.
- Updated the Modal Wizard a bit using some optimization techniques for
  jQuery.
- Moved our task collection to match the exact way we are doing
  collection methods within all other collections.  Now tasks_collection
  matches our paradigm.
Fix for new dropzone selector

Need both the span/div and icon so that dropzone doesn't
throw an invalid clickable error.
use correct param nomenclature

Fixes a bug where it wasn't properly processing params.
Major overhaul of profiles

This commit adds a lot of new functionality to profiles.

- Seperate 'Edit' button which takes you to profile/edit
- Edit button becomes a save & cancel button
- Can enter text and select agency and location from the tag list
- Can edit the skill and topic tags associated with your account
- Can enter title and bio (new fields)

Fixes a bug in the tag app in backbone, where you needed to
specify the targetId.  This targetId is so the tag app
can save the tag on the right entity, such as a project, task
or profile.
Redirect back to profile edit on service

When logging into a service like MyUSA or LinkedIn,
redirect back to the profile edit page (which is likely
where you started)
Keyup on bio change

When the bio changes, enable the save buttons.
Add username verification

Usernames should be unique, so perform client-side
validation that the username is unique.

Adds a helper function to the UserController to check
usernames.
Update popovers to show title/agency/location

Popovers now use the information entered in a profile
to show the user's title, location, and agency.

Modified UserController's info method to pull out
the agency and location tags if they're specified,
to make it easier on the front end.
Add agency and location to demo data

Now people can have a tag associated with their location or
agency, and the demo script runner will populate that for them.
Update test to match new redirect
Update to Task Templates and View

- I've updated the task template to better suite our wizard paradigm.
- I've started the process of adding in select2 for all the drop downs
  needed.
- Seperation created for drop downs that need to be fetched from server
  and ones that are already pre-defined.
- Added entities to Tag.js config file for drop downs that need to be
  fetched from server.
- Misc. updates to the modal_wizard
Move the change photo button to photo

Be consistent with the profile view.