return nil for no background

I want to be able to check on the client side when there wasn't a background generated. This way i'm not left with just a background color. so I've moved some stuff around. It now returns `nil` if there wasn't a background pattern generated. rather than just a square with a solid color.

@andrew @jasonlong