Passing interchangably as int/bytes was weird, and due to Python's signedness on int resulted in a heck of a bug-hunt.
I've switched IP address to converting from/to a tuple internally, so Python code doesn't have to be weird.
Uses an arbitrarily sized, dynamically alloc'd buffer. This should *probably* do the legwork to get the whole buffer and give it to Python without needing multiple calls.