Topology convenience methods

- adds `atoms_by_name`. (e.g. `trajectory.top.atoms_by_name('CA')`)
- I didn't add `residues_by_name`,  but that would be a reasonable thing to add to `Topology` and `Chain`
- I also changed the `Residue.atom(self, index)` method to allow the argument to be a string (argument renamed `index_or_name`, in which case the first atom with the matching name is returned.