Improve performance of SMILES parser #1589
Note: this pull request is on top of #1576, and should not be merged before that.
The test cases I wrote flushed out a few issues which I fixed:
In passing, I removed the warnings about "Illegal aromatic element". We handle these elements without trouble (by analogy with C, N or O), and I think they might cause a user to simply uppercase the element in the SMILES, which would not be correct.