Add min, max, and preferred size to BaseWidget

- Add Size class to Widget module for storing height and width of a
  widget (I wonder if anything other than a widget will ever need
  a size?)
- Add properties to BaseWidget for min, max, and preferred size