Cabana: A Performance Portable Library for Particle-Based Simulations