Cart items are indexed by an md5 hash rather than numeric keys so we
can add custom data to cart items.
Plugins can hook in and add meta data, load it, and display it. The
adjust_price() function lets you adjust a products price too since its
loaded and stored in the cart on page load.
All works like a dream, all thats left is to show the values on the
cart page, and store them in the order item meta. Order item meta does
need a slight change though, to allow data with the same keys. Working
on that next.
Removed downloadable and virtual product types in favour of a
downloadable/virtual checkbox option meaning variations can also now be
virtual (no shipping) or downloadable. This should make it more
flexible.
Not many changes were needed to template since simple, downloadable,
and virtual were all pretty similar anyway.
Added a filter for admin for the new sub-types.
In the future variations should have boxes too for downloadable/virtual
so you can mis it up with physical/downloadable goods in the same
product :)