Only shift objects in Z if min z is below zero.  If Z is above zero leave alone

Slic3r, moves all newly imported objects, and new objects created by split, so that their bounding box minimum Z is at 0.

Obviously we don't want points below 0, so we should continue to move objects up to 0 on import.

However, if the object is above 0 already, we should probably handle separately, the moving of the object so extents[Z][MIN]=0.  e.g. using a new BUTTON called "Drop"

For objects with multiple separate volumes, we may want to split them in-place. 
slic3r current splits them, finds the bounding box and moves each objects so that etents[Z][MIN] = 0.

When splitting a multi-part object we may actually want to maintain their position.  For example, if we wanted to specify different materials like - abs for a hing, and pla for the two halves of a box.  or a manual support region and the object.

I'm sure there are other cases as well.

the only drawback to my implementation here is that 1) it's not the true bounding box returned unless the object is below 0.  and if you did want to drop all objects so min Z is 0, I haven't provided a way to do so (limits of my perl skill)

This is less of an immediate pull request, as - help, I'm trying to do something useful to Slic3r, but am stuck.  :)

let me know - I now know most of the places the align_to_origin and move are used, and more or less know what's happening, but not how to modify... very much. :)