Extract contract form editing from various steps to a helper

Also hardened the world org steps to make sure the org has a main office (so we have the choice of 'yes' or 'no' to feature on the home page when creating it), and then use the world office id to detect it's presence on the page.
New scenario and steps to describe FOI contact workflow for orgs
Add contact type to contacts and allow setting it in admin
Treat FOI contacts differently for org home page lists

Much like the main office for world orgs on their home page list of offices we allow FOI contacts to be added to the org contacts list, but we filter them out of the list of contacts.  We also don't present the yes / no choice on the form, or add/remove buttons on the list if it is an FOI contact.
Use home page list of contacts on exec office frontend page
Fetch the list of foi_contacts from an org and show on the home page
Pull the FOI links out of the sidebar and into the FOI contact section

Only if the org *has* foi contacts, otherwise leave them where they are.
Test that we can't put foi contacts on the home page via admin
Show the office type on the world office admin

It's a bit confusing with office type + contact type, maybe we just hide contact type for world offices (default it to general)?
Remove "+others" from org contact lists
Implement new design for FOI contacts section

Always show it, even if they have no FOI contacts.  Never show the FOI links in the corp info sidebar.
Style the FOI contact steps

I've pulled in the .steps styling from static.  This relies on some static and frontend toolkit pull requests to move the icon-step images from static to the toolkit.