Added a bunch of copy contructors

Java passes by reference, like, sort of. When it says "I pass by value",
it means "I pass around the value of whatever I see", which most of the
time is a fucking pointer. The cloneable interface don't mandate deep
copying, so it's worthless; copying arrays and other collections return
a copy filled with copies of the "values", thus of the pointers.

I need all this data copied since it'l be a network hit away in most
cases.