Merge pull request #980 from rintaro/newtype-comparable

diff --git a/Foundation/FileManager.swift b/Foundation/FileManager.swift
index 7778abf..ba4649f 100644
--- a/Foundation/FileManager.swift
+++ b/Foundation/FileManager.swift
@@ -774,7 +774,7 @@
     }
 }
 
-public struct FileAttributeKey : RawRepresentable, Equatable, Hashable, Comparable {
+public struct FileAttributeKey : RawRepresentable, Equatable, Hashable {
     public let rawValue: String
     
     public init(_ rawValue: String) {
@@ -793,10 +793,6 @@
         return lhs.rawValue == rhs.rawValue
     }
     
-    public static func <(_ lhs: FileAttributeKey, _ rhs: FileAttributeKey) -> Bool {
-        return lhs.rawValue < rhs.rawValue
-    }
-
     public static let type = FileAttributeKey(rawValue: "NSFileType")
     public static let size = FileAttributeKey(rawValue: "NSFileSize")
     public static let modificationDate = FileAttributeKey(rawValue: "NSFileModificationDate")
@@ -822,7 +818,7 @@
     public static let systemFreeNodes = FileAttributeKey(rawValue: "NSFileSystemFreeNodes")
 }
 
-public struct FileAttributeType : RawRepresentable, Equatable, Hashable, Comparable {
+public struct FileAttributeType : RawRepresentable, Equatable, Hashable {
     public let rawValue: String
 
     public init(_ rawValue: String) {
@@ -841,10 +837,6 @@
         return lhs.rawValue == rhs.rawValue
     }
 
-    public static func <(_ lhs: FileAttributeType, _ rhs: FileAttributeType) -> Bool {
-        return lhs.rawValue < rhs.rawValue
-    }
-
     public static let typeDirectory = FileAttributeType(rawValue: "NSFileTypeDirectory")
     public static let typeRegular = FileAttributeType(rawValue: "NSFileTypeRegular")
     public static let typeSymbolicLink = FileAttributeType(rawValue: "NSFileTypeSymbolicLink")
diff --git a/Foundation/NSDecimalNumber.swift b/Foundation/NSDecimalNumber.swift
index c540332..1e049d6 100644
--- a/Foundation/NSDecimalNumber.swift
+++ b/Foundation/NSDecimalNumber.swift
@@ -8,7 +8,7 @@
 //
 
 /***************	Exceptions		***********/
-public struct NSExceptionName : RawRepresentable, Equatable, Hashable, Comparable {
+public struct NSExceptionName : RawRepresentable, Equatable, Hashable {
     public private(set) var rawValue: String
     
     public init(_ rawValue: String) {
@@ -26,10 +26,6 @@
     public static func ==(_ lhs: NSExceptionName, _ rhs: NSExceptionName) -> Bool {
         return lhs.rawValue == rhs.rawValue
     }
-    
-    public static func <(_ lhs: NSExceptionName, _ rhs: NSExceptionName) -> Bool {
-        return lhs.rawValue < rhs.rawValue
-    }
 }
 
 extension NSExceptionName {
diff --git a/Foundation/NSHTTPCookie.swift b/Foundation/NSHTTPCookie.swift
index 358b3df..a72a768 100644
--- a/Foundation/NSHTTPCookie.swift
+++ b/Foundation/NSHTTPCookie.swift
@@ -7,7 +7,7 @@
 // See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 //
 
-public struct HTTPCookiePropertyKey : RawRepresentable, Equatable, Hashable, Comparable {
+public struct HTTPCookiePropertyKey : RawRepresentable, Equatable, Hashable {
     public private(set) var rawValue: String
     
     public init(_ rawValue: String) {
@@ -25,10 +25,6 @@
     public static func ==(_ lhs: HTTPCookiePropertyKey, _ rhs: HTTPCookiePropertyKey) -> Bool {
         return lhs.rawValue == rhs.rawValue
     }
-    
-    public static func <(_ lhs: HTTPCookiePropertyKey, _ rhs: HTTPCookiePropertyKey) -> Bool {
-        return rhs.rawValue == rhs.rawValue
-    }
 }
 
 extension HTTPCookiePropertyKey {
diff --git a/Foundation/NSLocale.swift b/Foundation/NSLocale.swift
index 6bc7873..8cefe1d 100644
--- a/Foundation/NSLocale.swift
+++ b/Foundation/NSLocale.swift
@@ -194,7 +194,7 @@
 
 extension NSLocale {
 
-    public struct Key : RawRepresentable, Equatable, Hashable, Comparable {
+    public struct Key : RawRepresentable, Equatable, Hashable {
         public private(set) var rawValue: String
         public init(rawValue: String) {
             self.rawValue = rawValue
@@ -240,10 +240,6 @@
     public static func ==(_ lhs: NSLocale.Key, _ rhs: NSLocale.Key) -> Bool {
         return lhs.rawValue == rhs.rawValue
     }
-
-    public static func <(_ lhs: NSLocale.Key, _ rhs: NSLocale.Key) -> Bool {
-        return lhs.rawValue < rhs.rawValue
-    }
 }
 
 
diff --git a/Foundation/NSNotification.swift b/Foundation/NSNotification.swift
index 291b290..223512b 100644
--- a/Foundation/NSNotification.swift
+++ b/Foundation/NSNotification.swift
@@ -8,7 +8,7 @@
 //
 
 open class NSNotification: NSObject, NSCopying, NSCoding {
-    public struct Name : RawRepresentable, Equatable, Hashable, Comparable {
+    public struct Name : RawRepresentable, Equatable, Hashable {
         public private(set) var rawValue: String
         public init(rawValue: String) {
             self.rawValue = rawValue
@@ -21,10 +21,6 @@
         public static func ==(lhs: Name, rhs: Name) -> Bool {
             return lhs.rawValue == rhs.rawValue
         }
-        
-        public static func <(lhs: Name, rhs: Name) -> Bool {
-            return lhs.rawValue < rhs.rawValue
-        }
     }
 
     private(set) open var name: Name
diff --git a/Foundation/NSRunLoop.swift b/Foundation/NSRunLoop.swift
index c2a9459..ce4cf81 100644
--- a/Foundation/NSRunLoop.swift
+++ b/Foundation/NSRunLoop.swift
@@ -19,7 +19,7 @@
     internal let kCFRunLoopAllActivities = CFRunLoopActivity.allActivities.rawValue
 #endif
 
-public struct RunLoopMode : RawRepresentable, Equatable, Hashable, Comparable {
+public struct RunLoopMode : RawRepresentable, Equatable, Hashable {
     public private(set) var rawValue: String
     
     public init(_ rawValue: String) {
@@ -37,10 +37,6 @@
     public static func ==(_ lhs: RunLoopMode, _ rhs: RunLoopMode) -> Bool {
         return lhs.rawValue == rhs.rawValue
     }
-
-    public static func <(_ lhs: RunLoopMode, _ rhs: RunLoopMode) -> Bool {
-        return lhs.rawValue < rhs.rawValue
-    }
 }
 
 
diff --git a/Foundation/NSStream.swift b/Foundation/NSStream.swift
index 4e22f37..858a947 100644
--- a/Foundation/NSStream.swift
+++ b/Foundation/NSStream.swift
@@ -18,7 +18,7 @@
 #endif
 
 extension Stream {
-    public struct PropertyKey : RawRepresentable, Equatable, Hashable, Comparable {
+    public struct PropertyKey : RawRepresentable, Equatable, Hashable {
         public private(set) var rawValue: String
         
         public init(_ rawValue: String) {
@@ -36,10 +36,6 @@
         public static func ==(lhs: Stream.PropertyKey, rhs: Stream.PropertyKey) -> Bool {
             return lhs.rawValue == rhs.rawValue
         }
-        
-        public static func <(lhs: Stream.PropertyKey, rhs: Stream.PropertyKey) -> Bool {
-            return lhs.rawValue < rhs.rawValue
-        }
     }
     
     public enum Status : UInt {
@@ -262,7 +258,7 @@
 }
 
 // MARK: -
-public struct StreamSocketSecurityLevel : RawRepresentable, Equatable, Hashable, Comparable {
+public struct StreamSocketSecurityLevel : RawRepresentable, Equatable, Hashable {
     public let rawValue: String
     public init(rawValue: String) {
         self.rawValue = rawValue
@@ -273,9 +269,6 @@
     public static func ==(lhs: StreamSocketSecurityLevel, rhs: StreamSocketSecurityLevel) -> Bool {
         return lhs.rawValue == rhs.rawValue
     }
-    public static func <(lhs: StreamSocketSecurityLevel, rhs: StreamSocketSecurityLevel) -> Bool {
-        return lhs.rawValue < rhs.rawValue
-    }
 }
 extension StreamSocketSecurityLevel {
     public static let none = StreamSocketSecurityLevel(rawValue: "kCFStreamSocketSecurityLevelNone")
@@ -287,7 +280,7 @@
 
 
 // MARK: -
-public struct StreamSOCKSProxyConfiguration : RawRepresentable, Equatable, Hashable, Comparable {
+public struct StreamSOCKSProxyConfiguration : RawRepresentable, Equatable, Hashable {
     public let rawValue: String
     public init(rawValue: String) {
         self.rawValue = rawValue
@@ -298,9 +291,6 @@
     public static func ==(lhs: StreamSOCKSProxyConfiguration, rhs: StreamSOCKSProxyConfiguration) -> Bool {
         return lhs.rawValue == rhs.rawValue
     }
-    public static func <(lhs: StreamSOCKSProxyConfiguration, rhs: StreamSOCKSProxyConfiguration) -> Bool {
-        return lhs.rawValue < rhs.rawValue
-    }
 }
 extension StreamSOCKSProxyConfiguration {
     public static let hostKey = StreamSOCKSProxyConfiguration(rawValue: "NSStreamSOCKSProxyKey")
@@ -312,7 +302,7 @@
 
 
 // MARK: -
-public struct StreamSOCKSProxyVersion : RawRepresentable, Equatable, Hashable, Comparable {
+public struct StreamSOCKSProxyVersion : RawRepresentable, Equatable, Hashable {
     public let rawValue: String
     public init(rawValue: String) {
         self.rawValue = rawValue
@@ -323,9 +313,6 @@
     public static func ==(lhs: StreamSOCKSProxyVersion, rhs: StreamSOCKSProxyVersion) -> Bool {
         return lhs.rawValue == rhs.rawValue
     }
-    public static func <(lhs: StreamSOCKSProxyVersion, rhs: StreamSOCKSProxyVersion) -> Bool {
-        return lhs.rawValue < rhs.rawValue
-    }
 }
 extension StreamSOCKSProxyVersion {
     public static let version4 = StreamSOCKSProxyVersion(rawValue: "kCFStreamSocketSOCKSVersion4")
@@ -334,7 +321,7 @@
 
 
 // MARK: - Supported network service types
-public struct StreamNetworkServiceTypeValue : RawRepresentable, Equatable, Hashable, Comparable {
+public struct StreamNetworkServiceTypeValue : RawRepresentable, Equatable, Hashable {
     public let rawValue: String
     public init(rawValue: String) {
         self.rawValue = rawValue
@@ -345,9 +332,6 @@
     public static func ==(lhs: StreamNetworkServiceTypeValue, rhs: StreamNetworkServiceTypeValue) -> Bool {
         return lhs.rawValue == rhs.rawValue
     }
-    public static func <(lhs: StreamNetworkServiceTypeValue, rhs: StreamNetworkServiceTypeValue) -> Bool {
-        return lhs.rawValue < rhs.rawValue
-    }
 }
 extension StreamNetworkServiceTypeValue {
     public static let voIP = StreamNetworkServiceTypeValue(rawValue: "kCFStreamNetworkServiceTypeVoIP")
diff --git a/Foundation/NSURL.swift b/Foundation/NSURL.swift
index 6c562ee..156c4c7 100644
--- a/Foundation/NSURL.swift
+++ b/Foundation/NSURL.swift
@@ -64,7 +64,7 @@
     return nil
 }
 
-public struct URLResourceKey : RawRepresentable, Equatable, Hashable, Comparable {
+public struct URLResourceKey : RawRepresentable, Equatable, Hashable {
     public private(set) var rawValue: String
     public init(rawValue: String) {
         self.rawValue = rawValue
@@ -81,10 +81,6 @@
     public static func ==(lhs: URLResourceKey, rhs: URLResourceKey) -> Bool {
         return lhs.rawValue == rhs.rawValue
     }
-
-    public static func <(lhs: URLResourceKey, rhs: URLResourceKey) -> Bool {
-        return lhs.rawValue < rhs.rawValue
-    }
 }
 
 extension URLResourceKey {
@@ -190,7 +186,7 @@
 }
 
 
-public struct URLFileResourceType : RawRepresentable, Equatable, Hashable, Comparable {
+public struct URLFileResourceType : RawRepresentable, Equatable, Hashable {
     public private(set) var rawValue: String
     public init(rawValue: String) {
         self.rawValue = rawValue
@@ -207,10 +203,6 @@
     public static func ==(lhs: URLFileResourceType, rhs: URLFileResourceType) -> Bool {
         return lhs.rawValue == rhs.rawValue
     }
-
-    public static func <(lhs: URLFileResourceType, rhs: URLFileResourceType) -> Bool {
-        return lhs.rawValue < rhs.rawValue
-    }
 }
 
 extension URLFileResourceType {
diff --git a/Foundation/Progress.swift b/Foundation/Progress.swift
index 08c3e30..8de0943 100644
--- a/Foundation/Progress.swift
+++ b/Foundation/Progress.swift
@@ -401,13 +401,12 @@
     /// If the value of the `localizedDescription` property has not been set, then the default implementation of `localizedDescription` uses the progress kind to determine how to use the values of other properties, as well as values in the user info dictionary, to create a string that is presentable to the user.
     open var kind: ProgressKind?
     
-    public struct FileOperationKind : RawRepresentable, Equatable, Hashable, Comparable {
+    public struct FileOperationKind : RawRepresentable, Equatable, Hashable {
         public let rawValue: String
         public init(_ rawValue: String) { self.rawValue = rawValue }
         public init(rawValue: String) { self.rawValue = rawValue }
         public var hashValue: Int { return self.rawValue.hashValue }
         public static func ==(_ lhs: FileOperationKind, _ rhs: FileOperationKind) -> Bool { return lhs.rawValue == rhs.rawValue }
-        public static func <(_ lhs: FileOperationKind, _ rhs: FileOperationKind) -> Bool { return lhs.rawValue < rhs.rawValue }
         
         /// Use for indicating the progress represents a download.
         public static let downloading = FileOperationKind(rawValue: "NSProgressFileOperationKindDownloading")
@@ -481,13 +480,12 @@
     var progress: Progress { get }
 }
 
-public struct ProgressKind : RawRepresentable, Equatable, Hashable, Comparable {
+public struct ProgressKind : RawRepresentable, Equatable, Hashable {
     public let rawValue: String
     public init(_ rawValue: String) { self.rawValue = rawValue }
     public init(rawValue: String) { self.rawValue = rawValue }
     public var hashValue: Int { return self.rawValue.hashValue }
     public static func ==(_ lhs: ProgressKind, _ rhs: ProgressKind) -> Bool { return lhs.rawValue == rhs.rawValue }
-    public static func <(_ lhs: ProgressKind, _ rhs: ProgressKind) -> Bool { return lhs.rawValue < rhs.rawValue }
     
     /// Indicates that the progress being performed is related to files.
     ///
@@ -495,13 +493,12 @@
     public static let file = ProgressKind(rawValue: "NSProgressKindFile")
 }
 
-public struct ProgressUserInfoKey : RawRepresentable, Equatable, Hashable, Comparable {
+public struct ProgressUserInfoKey : RawRepresentable, Equatable, Hashable {
     public let rawValue: String
     public init(_ rawValue: String) { self.rawValue = rawValue }
     public init(rawValue: String) { self.rawValue = rawValue }
     public var hashValue: Int { return self.rawValue.hashValue }
     public static func ==(_ lhs: ProgressUserInfoKey, _ rhs: ProgressUserInfoKey) -> Bool { return lhs.rawValue == rhs.rawValue }
-    public static func <(_ lhs: ProgressUserInfoKey, _ rhs: ProgressUserInfoKey) -> Bool { return lhs.rawValue < rhs.rawValue }
     
     /// How much time is probably left in the operation, as an NSNumber containing a number of seconds.
     ///