Overhaul the type of ImproveArrow

This now effectively guarantees merging of arrs.
Add implementation for (&&&)
Mark loop as inlinable
Add (+++) implementation
Add (|||) implementation
Mark tryInUnless as inlinable
Keep the trailing function in newReader
Have monadic bind inlined
Permit inlining of arrow composition
Fix a unicode failure in Improve.hs
Add monoid instance

This is based on an ArrowPlus instance, in line with Ross Paterson's
arrows package.
Add convenience Num instance
Add more numeric convenience instances
Add IsString convenience instance
Add an accessor to get at the actual function
Align = on lowerImprove