Small adjustments to apprend!/preprend!

A couple of trivial commits:

* Fix the case in which one tries to append/prepend a Vector to itself, by making a copy before growing. It could probably be handled more efficiently, but at least this avoids the error.
* Relax the type signature and allow a generic AbstractVector to be appended/preprended; I don't see anything against this, but I'm not sure of why it was restricted originally; in any case, the two functions has a different signature for the second argument, which seems wrong.