Opt branch

@acroy, thanks for the nice work. I created a pull request, since this facilitates adding line comments to the code. Hence, see below for further comments of further potential comments.
`amat*vm[m+1]`allocates a new vector. You could use the storage of `p`, which you are not using at this point, to replace this with `norm(Base.A_mul_B!(p,amat,vm[m+1]))`.