Add butlast and change disassemble to return value instead of printing it out

I have added a profiling function `profile`, which works, but does not recognize imports. For instance, if I try to  `(profile '(.exp numpy 5))` it complains that it doesn't know `numpy` although it is imported in the calling module. I have also added `butlast` and made `disassemble` return the bytecode/python code instead of printing it. In general side-effects are worse then returning imo, so possibly this is a problem elsewhere as well(?). I will investigate the profiling issue further, if this is necessary. Maybe the profiling function also shouldn't go into the core of the language, not sure.