Fleshed out some swap code

Added Spot prices. Swaps on Spot Markets
Changed curves so they return Either rather than throw an exception
 if there's missing data.