list_init() now puts LIST struct to heap and returns a pointer to newly created list

Various clean-ups + comment update
rename main.c to example.c