Add `BW::Font`

Thoughts on this?

@UsePropeller's been using it awhile, and clayallsopp/formotion#94 prompted me to see if it would be acceptable in BubbleWrap. I think it incorporates a lot of thoughts from #202, but still looking for feedback/useful for more folks.

Solves these pain points:
1. Cocoa verbosity
2. >1 methods in Cocoa to create fonts
3. Allows Font creation dynamically/via `Hash`

```ruby
BW::Font.new("Helvetica")
BW::Font.new("Helvetica", 18)
BW::Font.new(name: "Chalkduster", size: 16)
BW::Font.bold
BW::Font.italic(18)
```