Memoize Worksheet#num_cols and num_rows

Optimize iterating over all ListRows in a Worksheet by memoizing the
`Worksheet#num_cols` and `Worksheet#num_rows` methods. For a worksheet
with about 1200 rows with 36 columns each this reduced the run-time of
the following code snippet from more than 1900 seconds to less than 3
seconds:

    bookings = worksheet.list
    pending = bookings.select{|row| row['Order ID'].present? and row['Status'] == 'pending'}

I used ruby-prof to trace where this time was spent. The results pretty
clearly showed that most of the time was spent inside the
`Worksheet#num_cols` method so that's where I started optimizing. Just
memoizing the result of that method shows such a drastic improvement in
runtime that I didn't bother doing any further optimizations.
Merge branch 'memoize-worksheet-num-cols'