First pass at implementing modules

This first step creates the notion of a module and corresponding
lifecycle functions, with helpers to simplify working with them.

Once everything is converted over to this module format, then we
can make the stack manager automagically find the correct order for
init/start_up/shut_down/clean_up
diff --git a/btcore/Android.mk b/btcore/Android.mk
index ce00814..e362cb3 100644
--- a/btcore/Android.mk
+++ b/btcore/Android.mk
@@ -21,10 +21,12 @@
 include $(CLEAR_VARS)
 
 LOCAL_C_INCLUDES := \
-    $(LOCAL_PATH)/include
+    $(LOCAL_PATH)/include \
+    $(LOCAL_PATH)/../osi/include
 
 LOCAL_SRC_FILES := \
     src/bdaddr.c \
+    src/module.c \
     src/uuid.c
 
 LOCAL_CFLAGS := -std=c99 $(bdroid_CFLAGS)