Ticket/280 - handle order codes as session variables

This delays creation of orders until you create a cart. In fact, the only way to create an order is by adding an item or discount to a cart. Orders for anonymous users are handled via sessions instead of codes in the URLs, although we also still support code-based navigation in order to handle order editing.

This should also make it so that facebook can reasonably scrape pages for their opengraph data without nasty hacks.