Inline definitions from winapi/advapi32

For now it's probably worth the decrease in build times
diff --git a/Cargo.toml b/Cargo.toml
index 85a75bf..e738ee8 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -15,8 +15,6 @@
 
 [dependencies]
 libc = "0.2"
-winapi = "0.2"
-advapi32-sys = "0.1.2"
 
 [dev-dependencies]
 log = "0.3.0"
diff --git a/src/os.rs b/src/os.rs
index e395ee8..d804808 100644
--- a/src/os.rs
+++ b/src/os.rs
@@ -250,15 +250,33 @@
 
 #[cfg(windows)]
 mod imp {
-    extern crate winapi;
-    extern crate advapi32;
-
     use std::io;
     use std::mem;
     use std::ptr;
     use Rng;
-    use self::winapi::{CRYPT_SILENT, CRYPT_VERIFYCONTEXT, DWORD, HCRYPTPROV, PROV_RSA_FULL};
-    use self::advapi32::{CryptAcquireContextA, CryptGenRandom, CryptReleaseContext};
+
+    type BOOL = i32;
+    type LPCSTR = *const i8;
+    type DWORD = u32;
+    type HCRYPTPROV = usize;
+    type BYTE = u8;
+
+    const PROV_RSA_FULL: DWORD = 1;
+    const CRYPT_SILENT: DWORD = 0x00000040;
+    const CRYPT_VERIFYCONTEXT: DWORD = 0xF0000000;
+
+    #[link(name = "advapi32")]
+    extern "system" {
+        fn CryptAcquireContextA(phProv: *mut HCRYPTPROV,
+                                szContainer: LPCSTR,
+                                szProvider: LPCSTR,
+                                dwProvType: DWORD,
+                                dwFlags: DWORD) -> BOOL;
+        fn CryptGenRandom(hProv: HCRYPTPROV,
+                          dwLen: DWORD,
+                          pbBuffer: *mut BYTE) -> BOOL;
+        fn CryptReleaseContext(hProv: HCRYPTPROV, dwFlags: DWORD) -> BOOL;
+    }
 
     pub struct OsRng {
         hcryptprov: HCRYPTPROV