Neighbor List Refactor
New Features:
- Adds notion of neighbor list format. Previous behavior is defined as `NeighborListFormat.Dense`.
- Adds two new neighbor list formats `NeighborListFormat.Sparse` and `NeighborListFormat.OrderedSparse`.
- Sparse neighbor lists can be converted to `jraph.GraphsTuple` using the `partition.to_jraph` function.
- Graph networks now use Jraph as a backend when neighbor list is specified in the `NeighborListFormat.Sparse` format.
- Improved the semantics of neighbor list creation / updating by splitting neighbor list function into a pair `neighbor_fn.allocate` and `neighbor_fn.update`. Neighbor lists include a convenience update function `nbrs = nbrs.update(position)`.
- Adds neighbor list support for Stillinger-Weber and EAM potentials.