Split optional.scala into many smaller files.

This change will hopefully make Spire's optional features easier
to manage and document. For now, it just breaks each object
out into its own file.