Cache partition list

At least one customer has a mysql database with many partitions which (for some unknown reason), takes a few seconds to answer the query listing the partitions. This caches the result of that query, and invalidates the cached value when the partitions are modified (assuming they are modified via these classes, rather than directly in the database).