Implements `usesPeriodicBoundaryConditions` on `Force`s and `System`

This implements a `usesPeriodicBoundaryConditions` method on all `Force`s as well as `System`.  A few notes:

- The default implementation throws `OpenMMException`
- The `System` returns `true` if at least one force it contains is periodic.  If at least one force is periodic, it will not throw an exception, even if not all forces implement `usesPeriodicBoundaryConditions`.  If no force is periodic and at least one force does not implement `usesPeriodicBoundaryConditions`, an exception is thrown.
- This has been implemented for the main forces, the plugin forces (Drude oscillators and Amoeba plugins), and the thermostat/barostats.
- This interface is tested (only) in the Reference platform, but as it is part of the OpenMM API, that is good enough to ensure coverage.

This addresses #180 and #415, both of which appears to have gone stale.  Since I would like this in the API for my own work, I went ahead and added it.