New seeding API

This PR ensures that all initialization algorithms share a consistent API. Specifically,

- Each algorithm is represented by a subtype of ``SeedingAlgorithm``
- Each algorithm implements the following methods:

   ```julia
   initseeds!(iseeds, alg, X)    # writing the indexes of seeds to ``iseeds``
   initseeds_by_costs!(iseeds, alg, costs)  # based on cost matrix
   ```
 
- Old functions for seeding are deprecated.
- Seeding algorithms are all tested