First step in sockets overhaul.

Mod:
	src/sockets_io.c
		-socket_io sees the most extensive changes
		-effectively replace current sockets functions with those provided in
		the sample sockets program
		-communication between client and server will henceforth rely on a
		quasi-polling mechanism (ie, the server writes to the client immediately
		after reading a packet, and the client reads from its socket immediately
		after writing to the server)
		-introduce padPacket() function, which prepends a packet payload with
		the sender's IP address

	src/(chat_server, constants).h
		-move MAX_PACKET_INPUT_LEN to MAX_PACKET_LEN macro, from the former file
		to the latter; the packet length is applicable to both the client and
		server executables.
Add response packets, and respective macros.

Add:
	src/chat_server.c
		-upon reading a packet, startServer() loop writes the response from
		handlePacketArgs() to the client.

	src/server_utils.c
		-handlePacketArgs() now returns output strings depending on the client's
		arguments, which either acknowledge receipt or return the information
		said client queried.

	src/socket_io.h
		-add ACKNOWLEDGE and UNDEFINED macros for handlePacketArgs().
Fix socket_io memory-alloc bug.

Fix:
	src/socket_io.c
		-sendPacket() never deallocated `char * received_buffer`, which was
		malloc'd to a 1000 bytes; after some seventy calls, bin/chat_client
		would crash due to an inability to further malloc memory.
		-attempting to free() the pointer threw a double-free error
		-solve by declaring `char received_buffer[1000]`
Add joinChannel() to client; def join macro.

Add:
	src/client_utils.c
		-add joinChannel(char * name), which places a user in the channel with
		.name equaling name.

	src/socket_io.h
		-add macro for JOIN_CHANNEL packet command.